Che cos'è MapReduce in Hadoop?
MapReduce è un framework software e un modello di programmazione utilizzato per l'elaborazione di enormi quantità di dati. Il programma MapReduce funziona in due fasi, ovvero Mappa e Riduci. Le attività di mappatura si occupano della suddivisione e della mappatura dei dati mentre le attività di riduzione mescolano e riducono i dati.
Hadoop è in grado di eseguire programmi MapReduce scritti in vari linguaggi: Java, Ruby, Python e C ++. I programmi di Map Reduce in cloud computing sono di natura parallela, quindi sono molto utili per eseguire analisi di dati su larga scala utilizzando più macchine nel cluster.
L'input per ciascuna fase sono le coppie chiave-valore . Inoltre, ogni programmatore deve specificare due funzioni: funzione di mappa e funzione di riduzione .
In questo tutorial per principianti su Hadoop MapReduce imparerai-
- Che cos'è MapReduce in Hadoop?
- Architettura MapReduce in Big Data spiegata in dettaglio
- Architettura di MapReduce spiegata in dettaglio
- Come funziona MapReduce organizza?
Architettura MapReduce in Big Data spiegata in dettaglio
L'intero processo passa attraverso quattro fasi di esecuzione, ovvero divisione, mappatura, mescolamento e riduzione.
Ora in questo tutorial di MapReduce, capiamo con un esempio di MapReduce-
Considera di avere i seguenti dati di input per il tuo MapReduce nel programma Big data
Welcome to Hadoop ClassHadoop is goodHadoop is bad
L'output finale dell'attività MapReduce è
male | 1 |
Classe | 1 |
bene | 1 |
Hadoop | 3 |
è | 2 |
per | 1 |
benvenuto | 1 |
I dati attraversano le seguenti fasi di MapReduce in Big Data
Divisioni di input:
Un input per un lavoro MapReduce in Big Data è diviso in parti di dimensioni fisse chiamate suddivisioni degli input La suddivisione dell'input è una parte dell'input che viene consumata da una singola mappa
Mappatura
Questa è la prima fase dell'esecuzione del programma di riduzione della mappa. In questa fase i dati in ogni divisione vengono passati a una funzione di mappatura per produrre valori di output. Nel nostro esempio, un compito della fase di mappatura è contare un numero di occorrenze di ogni parola dalle suddivisioni di input (maggiori dettagli sulla suddivisione di input sono forniti di seguito) e preparare un elenco sotto forma di
Mescolando
Questa fase consuma l'output della fase di mappatura. Il suo compito è consolidare i record rilevanti dall'output della fase di mappatura. Nel nostro esempio, le stesse parole sono riunite insieme alla rispettiva frequenza.
Ridurre
In questa fase, vengono aggregati i valori di output della fase Shuffling. Questa fase combina i valori della fase Shuffling e restituisce un singolo valore di output. In breve, questa fase riassume il dataset completo.
Nel nostro esempio, questa fase aggrega i valori della fase Shuffling, ovvero calcola le occorrenze totali di ogni parola.
Architettura di MapReduce spiegata in dettaglio
- Viene creata un'attività di mappa per ogni divisione che esegue quindi la funzione di mappa per ogni record nella divisione.
- È sempre vantaggioso disporre di più suddivisioni perché il tempo necessario per elaborare una suddivisione è ridotto rispetto al tempo necessario per l'elaborazione dell'intero input. Quando le suddivisioni sono più piccole, l'elaborazione è meglio bilanciata dal momento che stiamo elaborando le suddivisioni in parallelo.
- Tuttavia, non è nemmeno desiderabile avere spaccature di dimensioni troppo piccole. Quando le suddivisioni sono troppo piccole, il sovraccarico della gestione delle suddivisioni e della creazione delle attività di mappatura inizia a dominare il tempo totale di esecuzione del lavoro.
- Per la maggior parte dei lavori, è meglio impostare una dimensione di divisione uguale alla dimensione di un blocco HDFS (che è 64 MB, per impostazione predefinita).
- 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 scegliere il disco locale su HDFS è evitare la replica che avviene in caso di operazione di archiviazione HDFS.
- L'output della mappa è un output intermedio che viene elaborato da attività di riduzione per produrre l'output finale.
- Una volta completato il lavoro, l'output della mappa può essere gettato via. Quindi, 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 riesegue l'attività della mappa su un altro nodo e ricrea l'output della mappa.
- Riduci attività non funziona sul concetto di località dei dati. Un output di ogni attività della mappa viene inviato all'attività di riduzione. L'output della mappa 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 di riduzione viene archiviato in HDFS (la prima replica viene archiviata sul nodo locale e le altre repliche vengono archiviate su nodi off-rack). Quindi, scrivendo l'output di riduzione
Come funziona MapReduce organizza?
Ora, in questo tutorial di MapReduce, impareremo come funziona MapReduce
Hadoop divide il lavoro in attività. Esistono due tipi di attività:
- Attività sulla mappa (suddivisioni e mappatura)
- Ridurre le attività (mescolare, ridurre)
come menzionato sopra.
Il processo di esecuzione completo (esecuzione delle attività Mappa e Riduci, entrambe) è controllato da due tipi di entità chiamate a
- Jobtracker : agisce come un master (responsabile della completa esecuzione del lavoro inviato)
- Tracciatori di attività multipli : si comportano come schiavi, ognuno di loro esegue il lavoro
Per ogni lavoro inviato per l'esecuzione nel sistema, c'è un Jobtracker che risiede su Namenode e ci sono più tasktracker che risiedono su Datanode .

- Un lavoro è suddiviso in più attività che vengono quindi eseguite su più nodi di dati in un cluster.
- È responsabilità del job tracker coordinare l'attività pianificando l'esecuzione delle attività su diversi nodi di dati.
- L'esecuzione della singola attività è quindi affidata al task tracker, che risiede su ogni nodo di dati che esegue parte del lavoro.
- La responsabilità del task tracker è di inviare il rapporto sullo stato di avanzamento al job tracker.
- Inoltre, il task tracker invia periodicamente un segnale "heartbeat" a Jobtracker in modo da informarlo dello stato corrente del sistema.
- In questo modo il job tracker tiene traccia dell'avanzamento complessivo di ogni lavoro. In caso di fallimento dell'attività, il job tracker può riprogrammarla su un altro task tracker.