Cos'è MapReduce in Hadoop? ArchiStruttura e diagramma
⚡ Riepilogo intelligente
MapReduce è il modello di programmazione di Hadoop che trasforma un dataset di grandi dimensioni in un risultato di dimensioni ridotte eseguendo una funzione map su ogni suddivisione dell'input e successivamente una funzione reduce sui valori intermedi raggruppati.
Cos'è MapReduce in Hadoop?
MapReduce è un framework software e un modello di programmazione utilizzato per elaborare enormi quantità di dati. I programmi MapReduce funzionano in due fasi, ovvero Map e Reduce. Le attività di Map si occupano della suddivisione e della mappatura.ping dei dati mentre le attività di riduzione mescolano e riducono i dati.
Hadoop è in grado di eseguire programmi MapReduce scritti in vari linguaggi: Java, Rubino, Pythone C++I programmi MapReduce sono intrinsecamente paralleli, pertanto risultano molto utili per eseguire analisi di dati su larga scala utilizzando più macchine in un cluster.
L'input di ciascuna fase è costituito da coppie chiave-valore. Inoltre, ogni programmatore deve specificare due funzioni: una funzione di mappatura e una funzione di riduzione.
MapReduce ArchiLa tecnologia dei Big Data spiegata con l'esempio
L'intero processo passa attraverso quattro fasi di esecuzione, vale a dire suddivisione, mappaturaping, mescolando e riducendo.
Ora, in questo tutorial su MapReduce, cerchiamo di comprenderlo meglio attraverso un esempio pratico.
Supponiamo di avere i seguenti dati di input per il tuo MapReduce in Big Data programma:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Il diagramma sottostante tracQueste tre linee attraversano ogni fase, dalle suddivisioni di input a sinistra al conteggio finale delle parole a destra.
L'output finale dell'attività MapReduce è
| male | 1 |
| Classe | 1 |
| buono | 1 |
| Hadoop | 3 |
| is | 2 |
| a | 1 |
| Welcome | 1 |
Nell'ambito dei Big Data, i dati attraversano le seguenti fasi di MapReduce.
Divisioni di ingresso
L'input di un job MapReduce in Big Data viene suddiviso in parti di dimensioni fisse chiamate input split. Un input split è una porzione dell'input che viene elaborata da una singola operazione di map.
Mappaping
Questa è la primissima fase nell'esecuzione di un programma MapReduce. In questa fase, i dati in ogni split vengono passati a una mappaping funzione per produrre valori di output. Nel nostro esempio, il compito della mappaping la fase consiste nel contare il numero di occorrenze di ciascuna parola dalle suddivisioni di input (maggiori dettagli sulle suddivisioni di input sono forniti di seguito) e preparare un elenco nella forma di .
Mischiare le carte
Questa fase consuma l'output della mappaping fase. Il suo compito è consolidare i record rilevanti dalla mappaping Uscita di fase. Nel nostro esempio, le stesse parole sono raggruppate insieme alla rispettiva frequenza.
Ridurre
In questa fase, i valori di output della fase di rimescolamento vengono aggregati. Questa fase combina i valori della fase di rimescolamento e restituisce un singolo valore di output. In breve, questa fase riassume l'intero set di dati.
Nel nostro esempio, questa fase aggrega i valori della fase di mescolamento, ovvero calcola il numero totale di occorrenze di ciascuna parola.
MapReduce Archistruttura spiegata in dettaglio
I punti seguenti spiegano come le suddivisioni, le attività di mappatura e le attività di riduzione vengono effettivamente posizionate e memorizzate all'interno del cluster.
- Per ogni suddivisione viene creata un'attività di mappatura, che esegue poi la funzione di mappatura per ogni record presente nella suddivisione.
- È sempre vantaggioso avere più suddivisioni perché il tempo necessario per elaborare una suddivisione è ridotto rispetto al tempo necessario per elaborare l'intero input. Quando le suddivisioni sono più piccole, il carico di elaborazione è meglio bilanciato, poiché le suddivisioni vengono elaborate in parallelo.
- Tuttavia, non è auspicabile avere suddivisioni troppo piccole. Quando le suddivisioni sono troppo piccole, il sovraccarico dovuto alla gestione delle suddivisioni e alla creazione delle attività di mappatura inizia a prevalere sul tempo totale di esecuzione del lavoro.
- Per la maggior parte dei lavori, è meglio rendere la dimensione della divisione uguale alla dimensione di un HDFS blocco, che per impostazione predefinita è di 128 MB da Hadoop 2.x in poi (era di 64 MB in Hadoop 1.x) ed è controllato da
dfs.blocksizeproprietà. - L'esecuzione delle attività di mappatura comporta la scrittura dell'output su un disco locale sul rispettivo nodo, e non su HDFS.
- Il motivo per cui si preferisce un disco locale a HDFS è quello di evitare la replica che si verifica durante un'operazione di archiviazione su HDFS.
- L'output della mappa è un output intermedio che viene elaborato riducendo le attività per produrre l'output finale.
- Una volta completato il lavoro, l'output della mappa può essere buttato via. Pertanto, archiviarlo in HDFS con la replica diventa eccessivo.
- In caso di guasto del nodo, prima che l'output della mappa venga consumato dall'attività di riduzione, Hadoop esegue nuovamente l'attività della mappa su un altro nodo e ricrea l'output della mappa.
- Le attività di riduzione non si basano sul concetto di località dei dati. L'output di ogni attività di mappatura viene passato all'attività di riduzione. L'output della mappatura viene trasferito alla macchina su cui è in esecuzione l'attività di riduzione.
- Su questa macchina, l'output viene unito e quindi passato alla funzione di riduzione definita dall'utente.
- A differenza dell'output della mappa, l'output della riduzione viene memorizzato in HDFS (la prima replica è memorizzata sul nodo locale e le altre repliche su nodi esterni al rack). Pertanto, la scrittura dell'output della riduzione consuma larghezza di banda di rete, ma solo nella stessa misura di una normale pipeline di scrittura HDFS.
Come MapReduce organizza il lavoro?
In questo tutorial su MapReduce, impareremo come funziona MapReduce.
Hadoop suddivide il lavoro in attività. Esistono due tipi di attività:
- Attività di mappatura (divisioni e mappatura)ping)
- Ridurre i compiti (Riorganizzazione, Riduzione)
L'intero processo di esecuzione, ossia l'esecuzione di entrambe le attività Map e Reduce, è controllato da due tipi di entità chiamate:
- LavoroTracker: agisce come un master ed è responsabile della completa esecuzione di un lavoro inviato.
- Attività multipleTrackers: si comportano come schiavi, ognuno di loro svolgendo una parte del lavoro.
Per ogni lavoro inviato per l'esecuzione nel sistema, c'è un lavoroTracker che risiede sul NameNode e ci sono più attivitàTracker che risiedono sui DataNode.
Nota: il professionistaTracker e TaskTracLa coppia ker appartiene alla versione 1 di MapReduce (Hadoop 1.x). A partire da Hadoop 2.x, YARN suddivide questi compiti tra un ResourceManager a livello di cluster, un NodeManager su ogni nodo e un ApplicationMaster per ogni job, sebbene le fasi di map, shuffle e reduce rimangano invariate.
Il diagramma seguente mostra come un lavoro inviato viene suddiviso in attività e traccollegato attraverso il cluster.
- Un lavoro viene suddiviso in più attività che vengono poi eseguite su più nodi dati in un cluster.
- È responsabilità del lavoro tracker per coordinare l'attività pianificando l'esecuzione di attività su diversi nodi dati.
- L'esecuzione di un singolo compito viene quindi gestita dal compito tracker, che risiede su ogni nodo dati che esegue parte del lavoro.
- L'obiettivo tracLa responsabilità di ker è di inviare il rapporto di avanzamento al lavoro tracker.
- Inoltre, il compito tracker invia periodicamente un segnale di "battito cardiaco" al lavoroTracker in modo da notificargli lo stato attuale del sistema.
- Quindi il lavoro tracker mantiene track dell'avanzamento complessivo di ogni lavoro. In caso di errore del compito, il lavoro tracker può riprogrammarlo su un'attività diversa tracker.


