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.

  • ๐Ÿ”˜ Quattro fasi: Ogni lavoro viene eseguito come suddivisione, mappaping, mescolando e riducendo, con coppie chiave-valore che fluiscono tra ogni fase.
  • โ˜‘๏ธ Esempio pratico: Tre righe di testo diventano sette parole, mostrando esattamente il contributo di ciascuna fase.
  • โœ… Dimensioni divise: Per ogni suddivisione dell'input viene eseguita un'attivitร  di mappatura e la dimensione della suddivisione corrisponde normalmente alla dimensione del blocco HDFS.
  • ๐Ÿงช Dati intermedi: L'output della mappa viene scritto su disco locale anzichรฉ su HDFS, perchรฉ replicare dati non necessari รจ uno spreco.
  • ๏ธ Coordinazione: Un lavoroTracker pianifica il lavoro e l'attivitร TracI bambini segnalano i progressi attraverso segnali periodici del battito cardiaco.
  • โš ๏ธ Nota sulla versione: YARN ha sostituito quella coppia con un ResourceManager, dei NodeManager e un ApplicationMaster per ogni job, ereditati da Hadoop 2.x.

L'architettura di MapReduce in Hadoop spiegata con un esempio.

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.

Diagramma dell'architettura MapReduce tractre linee di input attraverso la suddivisione, mappaping, mescolando e riducendo

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.blocksize proprietร .
  • 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ร :

  1. Attivitร  di mappatura (divisioni e mappatura)ping)
  2. 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:

  1. LavoroTracker: agisce come un master ed รจ responsabile della completa esecuzione di un lavoro inviato.
  2. 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.

Diagramma che mostra un lavoro suddiviso in attivitร  di mappatura e riduzione tracguidato dal lavoroTracker e TaskTrackers

  • 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.

DOMANDE FREQUENTI

YARN lo faceva, a partire da Hadoop 2.x. Un ResourceManager a livello di cluster gestisce la pianificazione, un NodeManager viene eseguito su ciascun nodo e un ApplicationMaster per ogni job. tracks i suoi compiti. Le fasi di mappatura e riduzione rimangono invariate.

I modelli addestrati sulla cronologia dei lavori precedenti prevedono i tempi di esecuzione, raccomandano le dimensioni degli split e il numero di reducer e rilevano tempestivamente le anomalie. Monitorano inoltre i valori dei contatori, segnalando i lavori insolitamente lenti o fallimentari prima che l'esecuzione termini.

Copilot gestisce bene lo scaffolding: firme di mapper e reducer, generici, importazioni e chiamate di configurazione del driver. Decisioni sullo schema, come ad esempio quale campo รจ il gruppoping La chiave รจ che serve ancora uno sviluppatore che conosca i dati.

Un punto di partenza comune รจ un numero di slot di riduzione leggermente inferiore a quello disponibile, in modo che ogni reducer venga eseguito in un'unica ondata. Un numero insufficiente crea code lunghe; un numero eccessivo produce molti file di output di piccole dimensioni.

Un combiner รจ un mini-reducer opzionale che opera sull'output della mappa prima che attraversi la rete. Riduce drasticamente il traffico di shuffle, ma puรฒ essere utilizzato solo quando l'operazione di riduzione รจ sia associativa che commutativa.

Spark Mantiene i risultati intermedi in memoria ed esprime un lavoro come un grafo orientato di fasi, mentre MapReduce scrive l'output intermedio su disco tra le fasi. Spark รจ quindi molto piรน veloce per il lavoro iterativo.

Il partizionatore decide quale reducer riceve ogni chiave intermedia, calcolando di default l'hash della chiave modulo il numero di reducer. Viene generato un hash personalizzato quando tale hash lascia un singolo reducer sovraccarico.

Hadoop crea un task di mappatura per ogni suddivisione dell'input, e una suddivisione รจ un intervallo di byte anzichรฉ un intero file. Un file di grandi dimensioni produce molte suddivisioni; molti file di piccole dimensioni producono task di mappatura minuscoli e inefficienti.

Riassumi questo post con: