2011-12-27 14 views
5

Dopo aver letto http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html siamo giunti alla conclusione che il cluster di hadoop a 6 nodi potrebbe utilizzare un po 'di ottimizzazione, e io.sort.factor sembra essere un buon candidato, in quanto controlla un importante compromesso. Stiamo pianificando di ottimizzare e testare, ma pianificare in anticipo e sapere cosa aspettarsi e cosa guardare sembra ragionevole.Come posso sapere se il mio parametro di configurazione di hodoop io.sort.factor è troppo piccolo o troppo grande?

Attualmente è il 10. Come potremmo sapere che ci sta causando troppe fusioni? Quando lo solleviamo, come faremmo a sapere che sta causando l'apertura di troppi file?

Nota che non possiamo seguire gli estratti del registro blog direttamente come è aggiornato alla CDH3b2, e stiamo lavorando su CDH3u2, e hanno cambiato ...

risposta

9

ci sono alcuni compromessi da considerare.

  1. numero di ricerche effettuate durante l'unione dei file. Se si aumenta il fattore di unione troppo alto, il costo di ricerca su disco supererà i risparmi derivanti dall'operazione di fusione parallela (si noti che la cache del sistema operativo potrebbe attenuarlo in qualche modo).

  2. L'aumento del fattore di ordinamento riduce la quantità di dati in ciascuna partizione. Credo che il numero sia io.sort.mb/io.sort.factor per ogni partizione di dati ordinati. Credo che la regola generale sia di avere io.sort.mb = 10 * io.sort.factor (questo è basato sulla latenza di ricerca del disco sulla velocità di trasferimento, credo. Sono sicuro che questo potrebbe essere regolato meglio se fosse il collo di bottiglia. Se si mantengono questi in linea l'un l'altro, allora l'overhead di ricerca dall'unione dovrebbe essere minimizzato

  3. Se si aumenta io.sort.mb, si aumenta la pressione di memoria sul cluster, lasciando . meno memoria disponibile per attività di lavoro utilizzo della memoria per l'ordinamento è compiti mapper * io.sort.mb - così si potrebbe trovare te stesso causando più GC se questo è troppo alto

in sostanza,

012.

Se ti ritrovi a scambiare pesantemente, allora c'è una buona possibilità che tu abbia impostato il fattore di ordinamento troppo alto.

Se il rapporto tra io.sort.mb e io.sort.factor non è corretto, potrebbe essere necessario cambiare io.sort.mb (se si dispone della memoria) o abbassare il fattore di ordinamento.

Se si rileva che si impiegano più tempo nei mappatori rispetto ai riduttori, è possibile aumentare il numero di attività della mappa e diminuire il fattore di ordinamento (presupponendo che vi sia una pressione di memoria).