2012-08-27 7 views
6

C'è un limite per le dimensioni del contatore Hadoop. È 120 per impostazione predefinita. Provo ad usare la configurazione "mapreduce.job.counters.limit" per cambiarlo, ma non funziona. Ho visto il codice sorgente. È come l'istanza di JobConf nella classe "org.apache.hadoop.mapred.Counters" è privato. Qualcuno l'ha mai visto prima? Qual è la tua soluzione? THX :)Più di 120 contatori in hadoop

+0

Quale versione di Hadoop sono in esecuzione? – HypnoticSheep

+0

È 0.20. L'hai visto prima? –

+0

Non ho incontrato lo stesso problema (soprattutto perché non ho usato molto i contatori), ma sto usando 1.0.3 e la roba di JobConf è diversa. Prova la soluzione di Lorand in basso, sembra che funzionerà. – HypnoticSheep

risposta

5

È possibile ignorare che la proprietà in mapred-site.xml sul JT, TT, i nodi client ma fare in modo che questa sarà una modifica a livello di sistema:

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

quindi riavviare il servizio MapReduce sul tuo grappolo.

+0

Ho provato la tua soluzione. Funziona. Grazie :). Mi chiedo solo se c'è un modo per risolvere questo problema in modo dinamico. –

+0

Non c'è modo di farlo per un singolo lavoro? – javamonkey79

-1

Siamo in grado di personalizzare i limiti come opzioni della riga di comando solo per lavori specifici, invece di apportare modifiche in mapred-site.xml.

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

NOTA: x e y sono valori personalizzati in base all'ambiente/requisito.

4

In Hadoop 2, questo parametro di configurazione è chiamato

mapreduce.job.counters.max 

Impostazione sulla riga di comando o nel vostro oggetto Configuration non è sufficiente, però. È necessario chiamare il metodo statico

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

nel metodo setup() del mapper o riduttore per ottenere l'impostazione abbia effetto.

Testato con 2.6.0 e 2.7.1.

0

Il para è impostato dal file di configurazione, mentre paras sotto avranno effetto

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

Solo l'aggiunta di questo nel caso in cui nessun altro si affaccia lo stesso problema che abbiamo fatto: aumentare i contatori da con MRJob.

Per aumentare il numero di contatori, aggiungere emr_configurations al mrjob.conf (o passarlo a MRJob come parametro di configurazione):

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