GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Che cos'è Hadoop Mapreduce e come funziona

Introduzione

MapReduce è un modulo di elaborazione nel progetto Apache Hadoop. Hadoop è una piattaforma creata per affrontare i big data utilizzando una rete di computer per archiviare ed elaborare i dati.

La cosa così interessante di Hadoop è che i server dedicati a prezzi accessibili sono sufficienti per eseguire un cluster. Puoi utilizzare hardware di consumo a basso costo per gestire i tuoi dati.

Hadoop è altamente scalabile. Puoi iniziare con un minimo di una macchina, quindi espandere il tuo cluster a un numero infinito di server. I due principali componenti predefiniti di questa libreria software sono:

  • Riduci mappa
  • HDFS – File system distribuito Hadoop

In questo articolo parleremo del primo dei due moduli. imparerai che cos'è MapReduce, come funziona e la terminologia di base di Hadoop MapReduce .

Cos'è Hadoop MapReduce?

Il modello di programmazione di Hadoop MapReduce facilita l'elaborazione di big data archiviati su HDFS.

Utilizzando le risorse di più macchine interconnesse, MapReduce gestisce efficacemente una grande quantità di dati strutturati e non strutturati .

Prima di Spark e di altri framework moderni, questa piattaforma era l'unico attore nel campo dell'elaborazione di big data distribuita.

MapReduce assegna frammenti di dati tra i nodi in un cluster Hadoop. L'obiettivo è dividere un set di dati in blocchi e utilizzare un algoritmo per elaborare quei blocchi contemporaneamente. L'elaborazione parallela su più macchine aumenta notevolmente la velocità di gestione anche di petabyte di dati.

App di elaborazione dati distribuite

Questo framework consente la scrittura di applicazioni per l'elaborazione di dati distribuiti. Di solito, Java è ciò che la maggior parte dei programmatori usa poiché Hadoop è basato su Java .

Tuttavia, puoi scrivere app MapReduce in altre lingue, come Ruby o Python. Indipendentemente dalla lingua utilizzata da uno sviluppatore, non è necessario preoccuparsi dell'hardware su cui viene eseguito il cluster Hadoop.

Scalabilità

L'infrastruttura Hadoop può impiegare server di livello aziendale, nonché hardware di base. I creatori di MapReduce avevano in mente la scalabilità. Non è necessario riscrivere un'applicazione se si aggiungono più macchine. Basta modificare la configurazione del cluster e MapReduce continua a funzionare senza interruzioni.

Ciò che rende MapReduce così efficiente è che viene eseguito sugli stessi nodi di HDFS. Il programmatore assegna attività ai nodi in cui risiedono già i dati. Operare in questo modo aumenta il throughput disponibile in un cluster.

Come funziona MapReduce

Ad alto livello, MapReduce suddivide i dati di input in frammenti e li distribuisce su diverse macchine.

I frammenti di input sono costituiti da coppie chiave-valore. Le attività della mappa parallela elaborano i dati in blocchi sulle macchine in un cluster. L'output della mappatura funge quindi da input per la fase di riduzione. L'attività di riduzione combina il risultato in un output di coppia chiave-valore particolare e scrive i dati in HDFS.

Il file system distribuito Hadoop di solito viene eseguito sullo stesso set di macchine del software MapReduce. Quando il framework esegue un lavoro sui nodi che memorizzano anche i dati, il tempo per completare le attività si riduce notevolmente.

Terminologia di base di Hadoop MapReduce

Come accennato in precedenza, MapReduce è un livello di elaborazione in un ambiente Hadoop. MapReduce lavora su attività relative a un lavoro. L'idea è quella di affrontare una grande richiesta suddividendola in unità più piccole.

JobTracker e TaskTracker

Agli albori di Hadoop (versione 1), JobTracker e TaskTracker i demoni eseguivano operazioni in MapReduce. All'epoca, un cluster Hadoop poteva supportare solo le applicazioni MapReduce.

Un JobTracker controllava la distribuzione delle richieste dell'applicazione alle risorse di calcolo in un cluster. Poiché monitorava l'esecuzione e lo stato di MapReduce, risiedeva su un nodo master.

Un TaskTracker ha elaborato le richieste provenienti da JobTracker. Tutti i task tracker sono stati distribuiti tra i nodi slave in un cluster Hadoop.

FILO

Successivamente, in Hadoop versione 2 e successive, YARN è diventato il principale gestore delle risorse e della pianificazione. Da qui il nome Ancora un altro responsabile delle risorse . Yarn ha anche lavorato con altri framework per l'elaborazione distribuita in un cluster Hadoop.

Lavoro MapReduce

Un lavoro MapReduce è l'unità di lavoro principale nel processo MapReduce. È un compito che i processi Mappa e Riduci devono completare. Un lavoro è suddiviso in attività più piccole su un cluster di macchine per un'esecuzione più rapida.

Le attività dovrebbero essere abbastanza grandi da giustificare il tempo di gestione delle attività. Se dividi un lavoro in segmenti insolitamente piccoli, il tempo totale per preparare le divisioni e creare attività potrebbe superare il tempo necessario per produrre l'output effettivo del lavoro.

Attività MapReduce

I lavori MapReduce hanno due tipi di attività.

Un attività sulla mappa è una singola istanza di un'app MapReduce. Queste attività determinano quali record elaborare da un blocco di dati. I dati di input vengono suddivisi e analizzati, in parallelo, sulle risorse di calcolo assegnate in un cluster Hadoop. Questo passaggio di un processo MapReduce prepara l'output della coppia per il passaggio di riduzione.

Un Riduci attività elabora un output di un'attività della mappa. Simile alla fase della mappa, tutte le attività di riduzione si verificano contemporaneamente e funzionano in modo indipendente. I dati vengono aggregati e combinati per fornire l'output desiderato. Il risultato finale è un insieme ridotto di coppie che MapReduce, per impostazione predefinita, memorizza in HDFS.

Le fasi Mappa e Riduci hanno due parti ciascuna.

La Mappa la prima parte riguarda la scissione dei dati di input che vengono assegnati alle singole attività della mappa. Quindi, la mappatura La funzione crea l'output sotto forma di coppie chiave-valore intermedie.

Il Riduci lo stadio ha un shuffle e uno step di riduzione. Mischiare prende l'output della mappa e crea un elenco di coppie chiave-valore-elenco correlate. Quindi, riducendo aggrega i risultati della mescolanza per produrre l'output finale richiesto dall'applicazione MapReduce.

Come mappare Hadoop e ridurre il lavoro insieme

Come suggerisce il nome, MapReduce funziona elaborando i dati di input in due fasi:Mappa e Riduci . Per dimostrarlo, useremo un semplice esempio contando il numero di occorrenze di parole in ogni documento.

L'output finale che stiamo cercando è:Quante volte le parole Apache, Hadoop, Class e Track compaiono in totale in tutti i documenti .

A scopo illustrativo, l'ambiente di esempio è costituito da tre nodi. L'input contiene sei documenti distribuiti nel cluster. Lo terremo semplice qui, ma in circostanze reali non c'è limite. Puoi avere migliaia di server e miliardi di documenti.

1. Innanzitutto, nella fase della mappa , i dati di input (i sei documenti) sono divisi e distribuito nel cluster (i tre server). In questo caso, ogni attività della mappa funziona su una divisione contenente due documenti. Durante la mappatura, non c'è comunicazione tra i nodi. Si esibiscono in modo indipendente.

2. Quindi, le attività sulla mappa creano una coppia per ogni parola. Queste coppie mostrano quante volte ricorre una parola. Una parola è una chiave e un valore è il suo conteggio. Ad esempio, un documento contiene tre delle quattro parole che stiamo cercando:Apache 7 volte, Classe 8 volte, e Traccia 6 volte. Le coppie chiave-valore nell'output di un'attività della mappa hanno il seguente aspetto:

Questo processo viene eseguito in attività parallele su tutti i nodi per tutti i documenti e fornisce un output unico.

3. Dopo che la suddivisione degli input e la mappatura sono state completate, gli output di ogni attività della mappa vengono mescolati . Questo è il primo passaggio della fase di riduzione . Poiché stiamo cercando la frequenza di occorrenza per quattro parole, ci sono quattro attività di riduzione parallele. Le attività di riduzione possono essere eseguite sugli stessi nodi delle attività di mappatura oppure possono essere eseguite su qualsiasi altro nodo.

Il passaggio casuale assicura le chiavi Apache, Hadoop, Class, e Traccia sono ordinati per la fase di riduzione. Questo processo raggruppa i valori per chiavi sotto forma di coppie.

4. Nel passaggio di riduzione della fase Riduci, ciascuna delle quattro attività elabora una per fornire una coppia chiave-valore finale. Anche le attività di riduzione avvengono contemporaneamente e funzionano in modo indipendente.

Nel nostro esempio dal diagramma, le attività di riduzione ottengono i seguenti risultati individuali:

5. Infine, i dati nella fase di riduzione è raggruppato in un'unica uscita. MapReduce ora ci mostra quante volte le parole Apache, Hadoop, Class, e traccia è apparso in tutti i documenti. I dati aggregati sono, per impostazione predefinita, archiviati nell'HDFS.

L'esempio che abbiamo usato qui è di base. MapReduce esegue compiti molto più complicati.

Alcuni dei casi d'uso includono:

  • Trasformare i log di Apache in valori separati da tabulazioni (TSV).
  • Determinazione del numero di indirizzi IP univoci nei dati del weblog.
  • Esecuzione di modelli e analisi statistiche complesse.
  • Esecuzione di algoritmi di apprendimento automatico utilizzando framework diversi, come Mahout.

Come le partizioni Hadoop mappano i dati di input

Il partizionatore è responsabile dell'elaborazione dell'output della mappa. Una volta che MapReduce divide i dati in blocchi e li assegna alle attività di mappatura, il framework partiziona i dati chiave-valore. Questo processo ha luogo prima che venga prodotto l'output dell'attività di mappatura finale.

MapReduce partiziona e ordina l'output in base alla chiave. Qui vengono raggruppati tutti i valori per le singole chiavi e il partizionatore crea un elenco contenente i valori associati a ciascuna chiave. Inviando tutti i valori di una singola chiave allo stesso riduttore, il partizionatore garantisce un'equa distribuzione dell'output della mappa al riduttore.

Il partizionatore predefinito è ben configurato per molti casi d'uso, ma puoi riconfigurare il modo in cui MapReduce partiziona i dati.

Se ti capita di utilizzare un partizionatore personalizzato, assicurati che la dimensione dei dati preparati per ogni riduttore sia più o meno la stessa. Quando si partizionano i dati in modo non uniforme, un'attività di riduzione può richiedere molto più tempo per essere completata. Ciò rallenterebbe l'intero processo MapReduce.


Ubuntu
  1. Che cos'è un Makefile e come funziona?

  2. Cos'è NGINX? Come funziona?

  3. Che cos'è un server Web e come funziona un server Web?

  4. Lo scopo di .bashrc e come funziona?

  5. Cos'è il DNS e come funziona?

Comando file Linux:cosa fa e come usarlo

Come installare e configurare Hadoop su Ubuntu 20.04

Cos'è Docker? Come funziona?

Che cos'è il comando sorgente in Linux e come funziona?

Che cos'è il comando Grep in Linux? Perché viene utilizzato e come funziona?

Come funziona un sistema di bilanciamento del carico? Che cos'è il bilanciamento del carico?