In questo Hadoop blog, ti forniremo un flusso di esecuzione dei lavori di MapReduce end-to-end. Qui descriveremo in dettaglio ogni componente che fa parte del lavoro di MapReduce.
Questo blog ti aiuterà a rispondere a come funziona Hadoop MapReduce, come scorre i dati in MapReduce, come viene eseguito il lavoro Mapreduce in Hadoop?
Cos'è MapReduce?
Hadoop MapReduce è il livello di elaborazione dei dati. Elabora l'enorme quantità di dati strutturati e non strutturati archiviati in HDFS. MapReduce elabora i dati in parallelo dividendo il lavoro nell'insieme di attività indipendenti. Pertanto, l'elaborazione parallela migliora la velocità e l'affidabilità.
L'elaborazione dei dati Hadoop MapReduce avviene in 2 fasi:fase Mappa e fase Riduci.
- Fase mappa- È la prima fase dell'elaborazione dei dati. In questa fase, specifichiamo tutta la logica complessa/regole di business/codice costoso.
- Riduci fase- È la seconda fase di elaborazione. In questa fase, specifichiamo un'elaborazione leggera come aggregazione/somma.
Fasi del flusso di esecuzione dei lavori MapReduce
MapReduce elabora i dati in varie fasi con l'ausilio di diversi componenti. Discutiamo i passaggi dell'esecuzione del lavoro in Hadoop.
1. File di input
Nei file di input vengono memorizzati i dati per il lavoro MapReduce. In HDFS , risiedono i file di input. Il formato dei file di input è arbitrario. È inoltre possibile utilizzare file di registro basati su riga e formato binario.
2. Formato di input
Dopodiché InputFormat definisce come dividere e leggere questi file di input. Seleziona i file o altri oggetti per l'input. InputFormat crea InputSplit.
3. Separazioni di input
Rappresenta i dati che verranno elaborati da un singolo Mapper . Per ogni suddivisione, viene creata un'attività mappa. Quindi il numero di attività della mappa è uguale al numero di InputSplits. Framework divide diviso in record, che elabora il mappatore.
4. Lettore di record
Comunica con l'inputSplit. E poi converte i dati in coppie chiave-valore adatto alla lettura da parte del Mapper. RecordReader per impostazione predefinita usa TextInputFormat per convertire i dati in una coppia chiave-valore.
Comunica con InputSplit fino al completamento della lettura del file. Assegna un byte offset ad ogni riga presente nel file. Quindi, queste coppie chiave-valore vengono ulteriormente inviate al mappatore per un'ulteriore elaborazione.
5. Mappatore
Elabora il record di input prodotto dal RecordReader e genera coppie chiave-valore intermedie. L'uscita intermedia è completamente diversa dalla coppia di ingressi. L'output del mapper è la raccolta completa di coppie chiave-valore.
Il framework Hadoop non memorizza l'output del mapper su HDFS. Non memorizza, poiché i dati sono temporanei e la scrittura su HDFS creerà copie multiple non necessarie. Quindi Mapper passa l'output al combinatore per un'ulteriore elaborazione.
4. Combinatore
Combiner è un Mini-riduttore che esegue l'aggregazione locale sull'output del mapper. Riduce al minimo il trasferimento di dati tra mappatore e riduttore. Quindi, quando la funzionalità del combinatore viene completata, il framework passa l'output al partizionatore per un'ulteriore elaborazione.
5. Partizionatore
Il partizionatore nasce se stiamo lavorando con più di un riduttore. Prende l'output del combinatore ed esegue il partizionamento.
Il partizionamento dell'output avviene sulla base della chiave in MapReduce. Per funzione hash, chiave (o un sottoinsieme della chiave) deriva la partizione.
Sulla base del valore della chiave in MapReduce, avviene il partizionamento di ogni output del combinatore. E quindi il record con lo stesso valore chiave va nella stessa partizione. Dopodiché, ogni partizione viene inviata a un riduttore.
Il partizionamento nell'esecuzione di MapReduce consente una distribuzione uniforme dell'output della mappa sul riduttore.
6. Mescolare e ordinare
Dopo il partizionamento, l'output viene mischiato al nodo di riduzione. Il rimescolamento è il movimento fisico dei dati che viene eseguito sulla rete. Quando tutti i mappatori finiscono e mescolano l'output sui nodi riduttore.
Quindi il framework unisce questo output intermedio e ordina. Questo viene quindi fornito come input per ridurre la fase.
7. Riduttore
Riduttore quindi prende come input il set di coppie chiave-valore intermedie prodotte dai mappatori. Successivamente esegue una funzione di riduzione su ciascuno di essi per generare l'output.
L'uscita del riduttore è l'uscita finale. Quindi il framework memorizza l'output su HDFS.
8. Registratore
Scrive queste coppie chiave-valore di output dalla fase Riduttore nei file di output.
9. Formato di output
OutputFormat definisce il modo in cui RecordReader scrive queste coppie chiave-valore di output nei file di output. Quindi, le sue istanze fornite da Hadoop scrivono file in HDFS. Pertanto, le istanze OutputFormat scrivono l'output finale del riduttore su HDFS.
Conclusione
Abbiamo imparato passo dopo passo il flusso di esecuzione dei lavori MapReduce. Spero che questo blog ti aiuti molto a capire il funzionamento di MapReduce.
Se ancora, hai qualche domanda relativa al flusso di esecuzione del lavoro di MapReduce, quindi puoi condividerla con noi nella sezione commenti fornita di seguito. Faremo del nostro meglio per risolverli.