2012-08-27 8 views
6

Istnieje limit rozmiaru licznika Hadoop. Domyślnie jest to 120. Próbuję użyć konfiguracji "mapreduce.job.counters.limit", aby to zmienić, ale to nie działa. Widziałem kod źródłowy. To tak, jakby instancja JobConf w klasie "org.apache.hadoop.mapred.Counters" jest prywatna. Czy ktoś wcześniej to widział? Jakie jest twoje rozwiązanie? THX :)Ponad 120 liczników w hadoop

+0

Jaka wersja Hadoop są uruchomione? – HypnoticSheep

+0

To 0,20. Widziałeś to już wcześniej? –

+0

Nie spotkałem się z tym samym problemem (głównie dlatego, że nie używałem zbyt wielu liczników), ale używam wersji 1.0.3, a rzeczy JobConf są inne. Wypróbuj rozwiązanie Loranda poniżej, wygląda na to, że to zadziała. – HypnoticSheep

Odpowiedz

5

Można zastąpić tę nieruchomość w mapred-site.xml na JT, TT, węzłów klienckich, ale upewnij się, że będzie to zmiana całego systemu:

<configuration> 
    ... 
    <property> 
    <name>mapreduce.job.counters.limit</name> 
    <value>500</value> 
    </property> 
    ... 
</configuration> 

Następnie uruchom ponownie usługę mapreduce na swoje grupa.

+0

Próbowałem Twojego rozwiązania. To działa. Dzięki :). Zastanawiam się tylko, czy istnieje sposób na dynamiczne rozwiązanie tego problemu. –

+0

Czy nie można tego zrobić dla pojedynczego zadania? – javamonkey79

-1

Możemy dostosować limity jako opcje wiersza poleceń tylko dla określonych zadań, zamiast dokonywania zmian w mapred-site.xml.

-Dmapreduce.job.counters.limit=x 
-Dmapreduce.job.counters.groups.max=y 

UWAGA: x i y są wartościami niestandardowe w oparciu o środowisko/wymogu.

4

W Hadoop 2, ten parametr konfiguracyjny nazywa

mapreduce.job.counters.max 

Ustawienie go w linii poleceń lub w obiekcie konfiguracji nie wystarczy, choć. Musisz wywołać metody statycznej

org.apache.hadoop.mapreduce.counters.Limits.init()

w metodzie setup() swojego odwzorowującym lub reduktora, aby uzyskać ustawienia odniosły skutek.

Testowane przy użyciu wersji 2.6.0 i 2.7.1.

0

PARA ustala pliku konfiguracyjnego, natomiast pkt poniżej będą obowiązywać

mapreduce.job.counters.max=1000 
mapreduce.job.counters.groups.max=500 
mapreduce.job.counters.group.name.max=1000 
mapreduce.job.counters.counter.name.max=500 
0

wystarczy dodać to na wypadek gdyby ktoś inny stoi ten sam problem co my: zwiększenie liczników zz MRJob.

Aby podnieść liczbę liczników, dodać emr_configurations do mrjob.conf (lub przekazać je do MRJob jako parametr config):

runners: 
    emr: 
    emr_configurations: 
     - Classification: mapred-site 
     Properties: 
      mapreduce.job.counters.max: 1024 
      mapreduce.job.counters.counter.name.max: 256 
      mapreduce.job.counters.groups.max: 256 
      mapreduce.job.counters.group.name.max: 256