Introduzione a MapReduce
MapReduce è un componente computazionale di Hadoop Framework per la scrittura semplice di applicazioni che elaborano grandi quantità di dati in parallelo e memorizzati su grandi cluster di macchine a basso costo in modo affidabile e tollerante ai guasti. In questo argomento, impareremo come funziona MapReduce?
MapReduce può eseguire calcoli distribuiti e paralleli utilizzando set di dati di grandi dimensioni su un gran numero di nodi. Un processo MapReduce di solito divide i set di dati di input e quindi li elabora in modo indipendente dalle attività della mappa in modo completamente parallelo. L'output viene quindi ordinato e immesso per ridurre le attività. Sia l'input che l'output del processo sono memorizzati nei file system. Le attività sono programmate e monitorate dal framework.
Come funziona MapReduce?
L'architettura MapReduce contiene due componenti principali come servizi Daemon responsabili dell'esecuzione delle attività del mapper e del riduttore, del monitoraggio e della riesecuzione delle attività in caso di errore. In Hadoop 2 in poi Resource Manager e Node Manager sono i servizi daemon. Quando il client di lavoro invia un lavoro MapReduce, questi daemon entrano in azione. Sono inoltre responsabili dell'elaborazione parallela e delle funzioni di tolleranza agli errori dei lavori MapReduce.
In Hadoop 2 in poi le funzionalità di gestione delle risorse e pianificazione dei lavori o monitoraggio sono separate da YARN (Yet Another Resource Negotiator) come demoni diversi. Rispetto a Hadoop 1 con Job Tracker e Task Tracker, Hadoop 2 contiene un Resource Manager (RM) globale e Application Masters (AM) per ogni applicazione.
- Job Client invia il lavoro a Resource Manager.
- YARN Lo scheduler di Resource Manager è responsabile del coordinamento dell'allocazione delle risorse del cluster tra le applicazioni in esecuzione.
- Il gestore nodi YARN viene eseguito su ciascun nodo e esegue la gestione delle risorse a livello di nodo, coordinandosi con il gestore risorse. Avvia e monitora i contenitori di calcolo sulla macchina nel cluster.
- Application Master aiuta le risorse di Resource Manager e utilizza Node Manager per eseguire e coordinare le attività MapReduce.
- L'HDFS viene solitamente utilizzato per condividere i file di lavoro tra altre entità.
Fasi del modello MapReduce
Il modello MapReduce prevede tre fasi principali e una facoltativa:
1. Mapper
- È la prima fase della programmazione di MapReduce e contiene la logica di codifica della funzione mapper.
- La logica condizionale viene applicata al numero 'n' di blocchi di dati distribuiti su vari nodi di dati.
- La funzione mapper accetta coppie chiave-valore come input come (k, v), dove la chiave rappresenta l'indirizzo di offset di ciascun record e il valore rappresenta l'intero contenuto del record.
- L'output della fase Mapper sarà anche nel formato valore-chiave come (k ', v').
2. Mischia e ordina
- L'output di vari mappatori (k ', v'), quindi passa alla fase Shuffle e Sort.
- Tutti i valori duplicati vengono rimossi e valori diversi vengono raggruppati in base a chiavi simili.
- L'output della fase Shuffle e Sort sarà di nuovo coppie chiave-valore come chiave e matrice di valori (k, v ()).
3. Riduttore
- L'output della fase Shuffle e Sort (k, v ()) sarà l'input della fase Reducer.
- In questa fase viene eseguita la logica della funzione di riduzione e tutti i valori vengono aggregati rispetto alle rispettive chiavi.
- Reducer consolida gli output di vari mappatori e calcola l'output del lavoro finale.
- L'output finale viene quindi scritto in un singolo file in una directory di output di HDFS.
4. Combinatore
- È una fase facoltativa nel modello MapReduce.
- La fase combinatrice viene utilizzata per ottimizzare le prestazioni dei lavori MapReduce.
- In questa fase, vari output dei mappatori vengono localmente ridotti a livello di nodo.
- Ad esempio, se output di mapper diversi (k, v) provenienti da un singolo nodo contengono duplicati, vengono combinati, cioè ridotti localmente come output singolo (k, v ()).
- Questa fase rende la fase Shuffle e Sort ancora più rapida, consentendo in tal modo prestazioni aggiuntive nei lavori MapReduce.
Tutte queste fasi in un lavoro MapReduce possono essere rappresentate come di seguito:
Ad esempio, la logica di MapReduce per trovare il conteggio delle parole su una matrice di parole può essere visualizzata come di seguito:
fruits_array = (mela, arancia, mela, guava, uva, arancia, mela)
- La fase del mapper tokenizza l'array di input di parole in 'n' numero di parole per fornire l'output come (k, v). Ad esempio, considera 'apple'. L'output del mapper sarà (apple, 1), (apple, 1), (apple, 1).
- Shuffle and Sort accetta l'output del mapper (k, v) e raggruppa tutti i valori in base alle loro chiavi come (k, v ()). cioè (mela, (1, 1, 1)).
- La fase Reducer accetta Shuffle e ordina l'output e fornisce l'aggregazione dei valori (apple, (1 + 1 + 1)), corrispondenti alle loro chiavi. cioè (mela, 3).
Esecuzione speculativa di MapReduce Work
La velocità di MapReduce è dominata dall'attività più lenta. Quindi, per aumentare la velocità, un nuovo mapper funzionerà sullo stesso set di dati contemporaneamente. Qualunque cosa completi prima l'attività viene considerata come l'output finale e l'altra viene uccisa. È una tecnica di ottimizzazione.
Vantaggi di MapReduce
Ecco i vantaggi di MapReduce menzionati di seguito
1. Tolleranza ai guasti
- Durante un processo di riduzione della mappa, se una macchina che trasporta alcuni blocchi di dati fallisce l'architettura gestisce l'errore.
- Considera copie replicate dei blocchi in macchine alternative per ulteriori elaborazioni.
2. Resilienza
- Ogni nodo aggiorna periodicamente il proprio stato al nodo principale.
- Se un nodo slave non invia la sua notifica, il nodo master riassegna l'attività attualmente in esecuzione di quel nodo slave ad altri nodi disponibili nel cluster.
3. Rapido
- L'elaborazione dei dati è rapida poiché MapReduce utilizza HDFS come sistema di archiviazione.
- MapReduce richiede pochi minuti per elaborare terabyte di grandi volumi di dati non strutturati.
4. Elaborazione parallela
- Le attività MapReduce elaborano più blocchi dello stesso set di dati in parallelo dividendo le attività.
- Ciò offre il vantaggio del completamento dell'attività in meno tempo.
5. Disponibilità
- Più repliche degli stessi dati vengono inviate a numerosi nodi della rete.
- Pertanto, in caso di errore, altre copie sono prontamente disponibili per l'elaborazione senza alcuna perdita.
6. Scalabilità
- Hadoop è una piattaforma altamente scalabile.
- I sistemi RDBMS tradizionali non sono scalabili in base all'aumento del volume di dati.
- MapReduce consente di eseguire applicazioni da un numero enorme di nodi, utilizzando terabyte e petabyte di dati.
7. Conveniente
- La funzionalità di scalabilità di Hadoop insieme alla programmazione MapReduce consente di archiviare ed elaborare i dati in modo molto efficace e conveniente.
- I risparmi sui costi possono essere massicci in centinaia di terabyte di dati.
Conclusione: come funziona MapReduce
I dati moderni si stanno muovendo maggiormente verso il tipo non strutturato e un'enorme opzione di elaborazione dei dati convenzionale come RDBMS è ancora più difficile, che richiede tempo e denaro. Ma la programmazione MapReduce di Hadoop è molto efficace, più sicura e più rapida nell'elaborazione di grandi set di dati anche di terabyte o petabyte.
Articoli consigliati
Questa è una guida su come funziona MapReduce. Qui discutiamo le fasi del modello MapReduce con Benefici e come funziona. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -
- Componenti dell'ecosistema Hadoop
- MapReduce Algorithms
- Che cos'è MapReduce in Hadoop?
- Domande di intervista su MapReduce