Geek Dirt

Apr 24, 2021

Nel primo post della serie Hadoop Introduzione di Hadoop e l’esecuzione di un programma map-reduce , ho spiegato le basi di Map-Reduce. In questo post sto spiegando i suoi diversi componenti come partizionamento, Shuffle, Combinatore, Fusione, Ordinamento prima e poi come funziona.

Partizionamento:

Se il numero di riduttori è 2 e la funzione hash è:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

quindi per la chiave 1:

numero di partizione = hash(1) % 2 = 1;

per la chiave 2:

numero di partizione = hash(2) % 2 = 0;

per la chiave 4:

numero di partizione = hash(4) % 2 = 0;

Ciò significa che l’output per la chiave 1 andrebbe in partition_1 e l’output per la chiave 2 e 4 andrebbe in partition_0.

Shuffle:

Nell’output finale dell’attività map possono esserci più partizioni e queste partizioni dovrebbero andare a diverse attività di riduzione. Lo shuffling è fondamentalmente il trasferimento delle partizioni di output della mappa alle attività di riduzione corrispondenti. Map task notified application master sul completamento dell’attività della mappa e application master notifica il riduttore corrispondente per copiare l’output della mappa nella macchina di riduzione.

Combinatore:

Ordinamento:

È solo l’ordinamento dei dati in base alle chiavi.

Fusione:

Questo accade sul lato del riduttore. Reducer può ottenere dati da più attività della mappa e attraverso la fusione unisce i dati di diverse attività della mappa in una singola unità, mantenendo l’ordine di ordinamento.

Mappa-Riduci in dettaglio:

Mappa:

Ha un in memoria circular buffer e scrive direttamente nel buffer. Quando il buffer raggiunge il valore di soglia (predefinito 80%) inizia a scrivere su spill file attraverso un background threadseparato. L’attività mappa può ancora scrivere il suo output nel buffer mentre il thread in background è in esecuzione. Prima di scrivere sul file spill, l’output della mappa che è coppie chiave-valore viene partizionato e ordinato. Se c’è un combinatore, viene eseguito anche che riduce la dimensione dell’output.

Dopo l’attività, tutti i file di spill vengono ordinati di nuovo e viene creato un singolo file che viene partizionato e ordinato. Significa che questo file di output finale ha più partizioni. Dopo che l’attività della mappa è stata completata per un nodo, il suo output viene inviato al riduttore. Ecco perché vedi ridurre l’attività più dello 0% mentre la mappa è inferiore a <100%.

Quando hai un’attività di sola mappa, non c’è alcun rimescolamento, il che significa che i mappatori scriveranno l’output finale direttamente su HDFS.

Riduci:

Dopo aver ottenuto i dati dall’attività map, unisce i dati in una singola unità durante merge phase. Invece di unire direttamente tutti i file in uno , utilizza il concetto di merge factor, il cui scopo è quello di ridurre al minimo la quantità di dati scritti su disco. Quindi durante la fase di riduzione, la funzione di riduzione viene richiamata per ogni chiave nell’output ordinato. L’output di questa fase viene scritto direttamente nel file system di output, in genere HDFS.

Link utili:

Introduzione e lavorazione del filato

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.