hadoop mapreduce tutorial with examples what is mapreduce
In questo tutorial, capiremo cos'è MapReduce, i suoi vantaggi e come funziona Hadoop Map Reduce con gli esempi:
Nel tutorial precedente, abbiamo appreso di Hadoop HDFS e dei meccanismi di lettura e scrittura. Ora esploriamo un altro componente Hadoop, ovvero MapReduce.
Esaminiamo in dettaglio quanto segue:
- Cos'è MapReduce?
- I suoi vantaggi
- Qual è l'approccio esatto di MapReduce?
=> Visita qui per l'esclusiva serie di tutorial di formazione BigData.
Cosa imparerai:
Cos'è MapReduce?
Andiamo avanti e iniziamo con i componenti Hadoop. Come spiegato in precedenza, ci sono due componenti principali di Hadoop, ovvero Hadoop HDFS e Hadoop Map Reduce.
Hadoop HDFS è un sistema di distribuzione di file utilizzato per archiviare un'enorme quantità di dati in più rack.
Qui discuteremo l'unità di elaborazione di Hadoop, ovvero MapReduce.
La prossima domanda che sorge è 'cos'è Map Reduce e perché è necessario?'
Hadoop MapReduce è il 'Unità di elaborazione' e utilizzando questo componente, possiamo elaborare i Big Data archiviati su Hadoop HDFS.
Ma qual è l'esatto requisito? Perché abbiamo bisogno di questo componente di Hadoop?
I Big Data archiviati su Hadoop HDFS non vengono archiviati tradizionalmente. I dati vengono suddivisi in blocchi di dati memorizzati nei rispettivi DataNode. Quindi tutti i dati non vengono archiviati in una posizione centralizzata.
Quindi un'applicazione client nativa come Java o qualsiasi altra applicazione simile non può elaborare i dati nel formato corrente e abbiamo bisogno di un framework speciale che possa elaborare i blocchi di dati frammentati memorizzati nei rispettivi DataNode.
L'elaborazione viene eseguita utilizzando l'elaborazione Hadoop MapReduce.
Mappa Ridurre In Breve
Il diagramma sopra offre una panoramica di Map Reduce, le sue funzioni e utilizzi.
Cominciamo con le applicazioni di MapReduce e dove viene utilizzato. Per esempio, è usato per Classificatori, indicizzazione e ricerca e creazione di Motori di raccomandazione sui siti di e-commerce (Flipkart, Amazon, ecc.) Viene utilizzato anche come Analytics da diverse società.
Quando vediamo dalla prospettiva delle caratteristiche, è un file Modello di programmazione e può essere utilizzato per Distribuito su larga scala Modello come Hadoop HDFS e ha la capacità di programmazione parallela che lo rende molto utile.
Quando vediamo le funzioni in Map Reduce, vengono eseguite due funzioni, ovvero Map Function e Reduce function.
Questa tecnologia è stata implementata da importanti organizzazioni come Google, Yahoo, Facebook e adottata anche da Apache Hadoop come HDFS, PIG, HIVE e per l'archiviazione dei dati o l'esecuzione e l'elaborazione dei Big Data utilizzando HBase, noto anche come No-SQL.
Vantaggi di Map-Reduce
Ci sono due vantaggi in questa tecnologia.
# 1) Elaborazione parallela
Il primo vantaggio è l'elaborazione parallela. Utilizzando Map Reduce possiamo sempre elaborare i dati in parallelo.
Secondo il diagramma sopra, ci sono cinque macchine slave e alcuni dati risiedono su queste macchine. Qui, i dati vengono elaborati parallelamente utilizzando Hadoop Map Reduce e quindi l'elaborazione diventa veloce.
In realtà ciò che accade qui è che l'intera porzione di dati viene divisa da Hadoop HDFS in HDFS Block e Map-Reduce elabora questi blocchi di dati e quindi l'elaborazione diventa veloce.
# 2) Località dei dati
Questa è una cosa versatile fornita da Hadoop MapReduce, ovvero possiamo elaborare i dati dove si trovano.
Cosa significa?
Nel precedente tutorial HDFS, abbiamo capito che i dati che abbiamo spostato in Hadoop Cluster vengono suddivisi in blocchi HDFS e questi blocchi vengono salvati in SlaveMachines o DataNodes. Map-Reduce rileva l'elaborazione e la logica nei rispettivi nodi slave o nodi dati in cui risiedono i dati come blocchi HDFS.
L'elaborazione viene eseguita su un blocco di dati più piccolo in più posizioni in parallelo. Ciò consente di risparmiare molto tempo e larghezza di banda di rete necessaria per spostare i Big Data da una posizione all'altra.
Ricorda solo che i dati che stiamo elaborando sono Big Data suddivisi in blocchi e se iniziamo a spostare i Big Data direttamente attraverso i canali di rete assegnati in una macchina centralizzata e li elaboriamo, allora non ci darà alcun vantaggio in quanto consumeremo l'intera larghezza di banda nello spostamento dei dati su un server centralizzato.
Benefici:
Quindi, utilizzando Hadoop MapReduce non stiamo solo facendo 'Elaborazione parallela' , stiamo anche elaborando i dati sui rispettivi nodi slave o DataNode in cui sono presenti i blocchi di dati e quindi siamo anche 'Risparmio di molta larghezza di banda di rete' il che è molto vantaggioso.
Infine, le SlaveMachines vengono eseguite con l'elaborazione dei dati memorizzati su SlaveMachines e inviano i risultati alla Master Machine poiché i risultati non sono grandi quanto i blocchi che sono stati memorizzati sulle SlaveMachines. Quindi non utilizzerà molta larghezza di banda.
Le Macchine Slave rimandano il risultato alla Macchina Master, questi risultati vengono aggregati insieme e il risultato finale viene rimandato alla Macchina Client che ha inviato il lavoro.
Qui sorge una domanda: chi decide quali dati devono essere elaborati in quale DataNode?
Il Cliente sottopone il lavoro al Resource Manager e il Resource Manager è colui che fornisce la direzione per eseguire il lavoro sui rispettivi DataNode in cui risiedono i dati, decide in base al DataNode più vicino che è disponibile in modo che molta Rete La larghezza di banda non viene utilizzata.
Tradizionale vs. MapReduce Way
Per spiegare questo, prenderemo un'analogia della vita reale con il conteggio delle domande dei titolari di polizze della compagnia di assicurazioni, tutti sarebbero a conoscenza delle polizze delle compagnie di assicurazione, poiché la maggior parte delle grandi compagnie di assicurazioni hanno le loro filiali in varie città.
In quelle filiali, ci sono 'n' numeri di persone che hanno richiesto polizze assicurative sulla vita.
Prendiamo uno scenario in cui abbiamo cinque filiali di compagnie assicurative in cui le persone vengono e fanno domanda per polizze assicurative sulla vita. Ora abbiamo anche una sede di quella compagnia di assicurazioni che ha tutte le informazioni sulle filiali disponibili e localizzate.
Tuttavia, quando le persone vengono a richiedere la polizza di assicurazione sulla vita nei rispettivi rami A, B, C, D, E, le richieste di polizza vengono conservate nelle rispettive filiali stesse e tali informazioni non vengono condivise con la sede della compagnia di assicurazioni.
Modo tradizionale:
Vediamo come le persone si applicano tradizionalmente per la politica. Per risolvere questo problema tradizionalmente, tutte le domande verranno spostate nella sede della compagnia di assicurazioni e quindi inizierà il processo di richiesta.
differenza tra c c ++ e java
In questo caso, dobbiamo spostare tutte le domande alla sede della compagnia di assicurazioni che è un affare costoso, cioè dobbiamo raccogliere tutte le domande dalle filiali della compagnia di assicurazioni e portarle alla sede della compagnia di assicurazioni.
Questo è il modo in cui il costo è coinvolto insieme agli enormi sforzi nel fare questa attività.
Un altro aspetto di questo è il sovraccarico della sede della Compagnia di Assicurazioni, in quanto deve elaborare tutte le domande che sono state presentate dalle persone per le polizze nelle rispettive filiali.
Poiché la compagnia di assicurazioni sta elaborando le richieste che sono state applicate in tutte le filiali, ci vorrà molto tempo. Alla fine, questo processo non funziona molto bene.
MapReduce Way
Vediamo come Map-Reduce risolve questo problema.
MapReduce segue Data Locality, ovvero non porterà tutte le richieste alla sede della Compagnia di Assicurazioni, ma procederà parallelamente all'elaborazione delle domande nelle rispettive filiali.
Una volta elaborate le richieste che sono state applicate ad ogni filiale, questi rinviano i dettagli elaborati alla sede della Compagnia di Assicurazione.
miglior software firewall per Windows 10
Ora la sede della Compagnia di Assicurazioni deve solo aggregare il numero di domande elaborate che sono state inviate dalle rispettive filiali e conservare i dettagli nel rispettivo Database o Storage Center.
In questo modo il trattamento sarà molto semplice e veloce e gli assicurati ne ottengono i benefici in pochissimo tempo.
Mappa Riduci in dettaglio
Nel nostro esempio precedente, avevamo un input (applicazioni) che era distribuito tra i vari rami e ogni input veniva elaborato dalla rispettiva Funzione Mappa.
Sappiamo che MapReduce ha due funzioni, ovvero Map Function e Reduce Function.
La parte di elaborazione che è stata eseguita sui rispettivi rami è stata eseguita dalla Funzione Mappa. Quindi ogni input (application) in ogni filiale è stato elaborato utilizzando la Funzione Map, dopodiché i dettagli elaborati sono stati inviati alla Sede della Compagnia di Assicurazione e la parte di aggregazione è fatta dalla Funzione Reduce.
I dettagli dell'applicazione elaborata aggregata vengono forniti come output.
Questo è quello che è successo nel nostro esempio precedente. L'intero processo è stato suddiviso in attività di mappa e attività di riduzione.
L'attività di mappa riceve un input e l'output dell'attività di mappa viene assegnato all'attività di riduzione come input e questa attività di riduzione fornisce infine l'output al client.
Per capirlo in modo migliore, esaminiamo l'anatomia di MapReduce.
Un'attività MapReduce funziona su una coppia chiave-valore, quindi quando parliamo di una mappa, la mappa prende l'input come valore-chiave e fornisce l'output come un elenco di valori-chiave. Questo elenco di valori-chiave passa attraverso una fase di mescolamento e l'immissione di chiave e un elenco di valori vengono inviati al riduttore.
Infine, il Reducer ci fornisce un elenco delle coppie chiave-valore.
Esempio di MapReduce: processo di conteggio parole
Facciamo un altro esempio, ad esempio il processo di conteggio parole in MapReduce Way. Questo esempio è lo stesso dell'esempio introduttivo della programmazione Java, ovvero 'Hello World'.
Come da diagramma, avevamo un ingresso e questo ingresso viene diviso o viene suddiviso in vari ingressi. Quindi questo processo è chiamato suddivisione dell'input e l'intero input viene suddiviso in suddivisioni di dati in base al nuovo carattere di riga.
La prima riga è il primo Input, ad es. Bigdata Hadoop MapReduce , la seconda riga è il secondo Input i.e. MapReduce Hive Bigdata , allo stesso modo, per il terzo Input, lo è Hive Hadoop Hive MapReduce .
Passiamo alla fase successiva, ovvero la fase di mappatura. Ora, nella fase di mappatura, creiamo un elenco di coppie chiave-valore. Quindi l'Input è Key e Value, qui Key non è altro che l'offset del numero di riga. Il numero di riga è la chiave e l'intera riga è il valore.
Quindi, per la riga 1 l'offset è la chiave e il valore è Bigdata Hadoop MapReduce . Nella vita reale, il numero di riga o l'offset è un numero esadecimale, tuttavia, per semplificare, lo considereremo solo come numero 1 o 2.
Quindi la riga 1 sarà la chiave e l'intera riga sarà il valore. Quando passa attraverso la funzione di mappatura, ciò che la mappatura farà è, creerà l'elenco delle coppie chiave-valore. Per esempio, Bigdata , quindi quello che farà la funzione è che leggerà ogni parola della riga e ne segnerà una (1) dopo la virgola.
Contrassegnerà uno (1) come Valore; piace Bigdata, 1 Hadoop, 1 e MapReduce, 1 . Qui la domanda è: perché mettiamo uno (1) dopo ogni parola?
È perchè Bigdata è un conteggio così Bigdata, 1 . Allo stesso modo, Hadoop, 1 e MapReduce, 1 sta avendo un conteggio, ecco perché ne contrassegniamo uno (1) come valore. Allo stesso modo per la seconda riga o diciamo la riga 2 abbiamo, MapReduce Hive Bigdata .
Quindi, allo stesso modo, la funzione di mappatura crea nuovamente l'elenco delle coppie valore-chiave per essa e quindi, in base al conteggio, l'elenco delle coppie valore-chiave sarà MapReduce, 1 Hive, 1 e Bigdata, 1 .
Otterremo lo stesso come risultato della funzione di mappatura per la riga 3, ad es. Hive, 2 Hadoop, 1 e MapReduce, 1 .
Passiamo alla Fase di Mescolamento, in questa fase per ogni Chiave viene preparato un elenco. La fase di mescolamento troverà l'aspetto di Key Bigdata e aggiungerà i valori nell'elenco. Quindi vediamo cosa sta succedendo qui.
Come possiamo vedere due frecce in arrivo, la prima freccia proviene dall'elenco 1 e un'altra freccia proviene dall'elenco 2, quindi il risultato sarà Bigdata, (1,1) .
Allo stesso modo, quando vediamo la parola Hadoop , ancora una volta per Hadoop un altro elenco verrà preparato per i valori. Come possiamo vedere due frecce in arrivo puntano a Shuffling che significa la parola Hadoop verrà prelevato rispettivamente dall'elenco 2 e dall'elenco 3, ovvero il risultato finale dopo lo shuffling sarà Hadoop, (1, 1) .
Allo stesso modo, otterremo il resto delle parole come Alveare, (1, 1, 1) e MapReduce, (1, 1, 1) insieme al loro elenco di valori o pronunciare l'elenco di conteggio in base alla disponibilità di parole nei rispettivi elenchi.
Veniamo ora alla Fase di Riduzione, in questa fase, iniziamo l'aggregazione dei Valori che erano presenti nella lista contro ogni Chiave. Quindi per Bigdata, c'erano due valori presenti nell'elenco, ad es. (undici) così la presentazione di questi valori sarà fatta così Bigdata, 2 .
Allo stesso modo, per Hadoop il valore sarà somma, ad es. (undici) la presentazione sarà Hadoop, 2 .
Allo stesso modo per Alveare e Riduci mappa, la presentazione per la funzione di riduzione sarà Alveare, 3 e MapReduce, 3 rispettivamente.
Infine, il risultato finale verrà rispedito al Cliente come mostrato nel diagramma sottostante del 'Processo di conteggio parole di MapReduce globale'
Il processo globale di conteggio parole MapReduce
Ecco come funziona l'intero processo di conteggio parole quando si utilizza MapReduce Way.
Conclusione
In questo tutorial, abbiamo imparato quanto segue:
- Hadoop Map Reduce è il 'Unità di elaborazione' di Hadoop.
- Per elaborare i Big Data archiviati da Hadoop HDFS utilizziamo Hadoop Map Reduce.
- Viene utilizzato in ricerca e indicizzazione, classificazione, raccomandazione e analisi.
- Ha caratteristiche come il modello di programmazione, la programmazione parallela e il modello distribuito su larga scala.
- I modelli di progettazione di MapReduce sono: Riepilogo, classificazione dei record principali, ordinamento e analisi come join e selezione.
- Ha solo due funzioni cioè Funzione Mapper e Funzione Riduttore.
- L'elaborazione parallela e la località dei dati sono i buoni vantaggi di Hadoop MapReduce.
- Il processo di MapReduce è diviso in sei fasi, ovvero INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING e FINAL RESULT.
Questo è tutto per questo tutorial, nei nostri prossimi tutorial tratteremo:
- Come funziona MapReduce con YARN e i suoi componenti?
- Flusso di lavoro dell'applicazione di YARN.
- Cos'è Spark e qual è la differenza tra Hadoop e Spark?
=> Controlla TUTTI i tutorial di BigData qui.
Lettura consigliata
- Cos'è Hadoop? Esercitazione su Apache Hadoop per principianti
- Tutorial Python DateTime con esempi
- Esercitazione sul data mart - Tipi, esempi e implementazione del data mart
- Modello di dati dimensionale nel data warehouse - Tutorial con esempi
- Tutorial sulla lunghezza di array Java con esempi di codice
- Tutorial sui Big Data per principianti | Cosa sono i big data?
- Tutorial sullo scripting della shell di Unix con esempi
- Selenio Trova elemento per tutorial di testo con esempi