2013-10-04 7 views
5

Il parametro "mapred.min.split.size" modifica la dimensione del blocco in cui il file è stato scritto in precedenza? Presupponendo una situazione in cui I, all'avvio del mio JOB, passa il parametro "mapred.min.split.size" con un valore di 134217728 (128 MB). Che cosa è corretto dire su cosa succede?Comportamento del parametro "mapred.min.split.size" in HDFS

1 - Ciascun processo MAP equivale a 2 blocchi HDFS (presupponendo ciascun blocco 64 MB);

2 - Ci sarà una nuova divisione del mio file di input (precedentemente incluso HDFS) per occupare i blocchi in HDFS 128M;

risposta

27

Le dimensioni spaccatura è calcolata con la formula: -

max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size)) 

Nel tuo caso sarà: -

split size=max(128,min(Long.MAX_VALUE(default),64)) 

Così sopra inferenza: -

  1. ogni mappa elaborerà 2 blocchi hdfs (assumendo ogni blocco 64 MB): True

  2. Ci sarà una nuova divisione del mio file di input (precedentemente inclusi HDFS) ad occupare i blocchi in HDFS 128M: False

ma rendendo la dimensione minima di divisione superiore alla dimensione del blocco aumenta la split size, ma a costo di località.

+0

Grazie mille – Alexandre

+0

decisamente utile, grazie! – wakensky

+0

Nota che [i valori sono espressi in byte] (https://github.com/linkedin/dr-elephant/wiki/Tuning-Tips#mapreduceinputfileinputformatsplitminsize), non in megabyte. Quindi per 128 MB dovresti specificare mapreduce.input.fileinputformat.split.minsize = 134217728 –

0

Si supponga che la dimensione minima divisa sia definita 128mb e che la dimensione minima del blocco sia definita 64mb.

NOTA: poiché ciascun blocco verrà replicato su 3 diversi datanode in base all'HDFS per impostazione predefinita. Inoltre, ogni attività della mappa esegue la sua operazione su un singolo blocco.

Quindi, la dimensione dello split di 128mb considererà 2 blocchi come un blocco singolo e creerà una singola attività mappa che verrà eseguita su un singolo datanode. Questo accade a costo della località dei dati. Con "costo della località dei dati" sto parlando del blocco che risiede sul datanode su cui non è in esecuzione l'attività della mappa. Che deve essere recuperato da quel datanode ed elaborato sul datanode su cui è in esecuzione l'attività della mappa, con conseguente riduzione delle prestazioni.

Tuttavia, se si considera un file di dimensione 128mb, con dimensione di blocco predefinita di 64 MB e una dimensione di divisione minima predefinita di 64 MB, in tal caso, come normalmente accade, verranno create due attività mappa per ogni 64 mb di blocco.