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
risposta
È 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.
Ho provato la tua soluzione. Funziona. Grazie :). Mi chiedo solo se c'è un modo per risolvere questo problema in modo dinamico. –
Non c'è modo di farlo per un singolo lavoro? – javamonkey79
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.
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.
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
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
Quale versione di Hadoop sono in esecuzione? – HypnoticSheep
È 0.20. L'hai visto prima? –
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