HBase
 sql >> Database >  >> NoSQL >> HBase

Come funziona Hadoop – Comprendi il funzionamento di Hadoop

Vuoi sapere come Hadoop archivia ed elabora enormi quantità di dati?

In questo articolo, studieremo come funziona Hadoop internamente. Vedremo come Hadoop archivia ed elabora grandi set di dati. L'articolo spiega in dettaglio il funzionamento di Hadoop. L'articolo fornisce innanzitutto una breve introduzione ad Hadoop.

Quindi vedremo i componenti principali di Hadoop e i Daemon in esecuzione nel cluster Hadoop. L'articolo spiega quindi il funzionamento di Hadoop coprendo tutti i suoi componenti principali come HDFS, MapReduce e YARN.

Vediamo ora prima la breve introduzione ad Hadoop.

Introduzione ad Hadoop

Con l'aumento dei Big Data, nel 2008 Apache Software Foundation ha sviluppato un framework open source noto come Apache Hadoop, che è una soluzione a tutti i problemi dei Big Data.

Apache Hadoop è un framework in grado di archiviare ed elaborare enormi quantità di dati non strutturati di dimensioni variabili da terabyte a petabyte. È un sistema altamente tollerante ai guasti e altamente disponibile.

Hadoop archivia un'enorme quantità di dati in modo distribuito in HDFS. Hadoop MapReduce è l'unità di elaborazione in Hadoop, che elabora i dati in parallelo.

Hadoop YARN è un altro componente fondamentale del framework Hadoop, che è responsabile della gestione delle risorse tra le applicazioni in esecuzione nel cluster e della pianificazione dell'attività.

Prima di studiare come funziona Hadoop internamente, vediamo innanzitutto i componenti principali e i demoni di Hadoop.

Componenti e demoni di Hadoop

Hadoop è costituito da tre componenti principali che sono HDFS, MapReduce e YARN.

1. Hadoop HDFS

È il livello di archiviazione per Hadoop. Il file system distribuito Hadoop archivia i dati su vari nodi in un cluster. Divide i dati in blocchi e li archivia su nodi diversi. La dimensione del blocco è di 128 MB per impostazione predefinita . Possiamo configurare la dimensione del blocco secondo i nostri requisiti.

2. Hadoop MapReduce

È il livello di elaborazione in Hadoop. Hadoop MapReduce elabora i dati archiviati in Hadoop HDFS in parallelo su vari nodi del cluster. Divide l'attività inviata dall'utente nell'attività indipendente e le elabora come attività secondarie nell'hardware di base.

3. FILATO Hadoop

È il livello di gestione delle risorse e dei processi di Hadoop. YARN è responsabile della condivisione delle risorse tra le applicazioni in esecuzione nel cluster e della pianificazione dell'attività nel cluster.

Questi sono i tre componenti principali di Hadoop.

Daemon in esecuzione nel cluster Hadoop

Ci sono alcuni demoni che girano sul cluster Hadoop. I demoni sono il processo leggero che viene eseguito in background.

Alcuni Demoni vengono eseguiti sul nodo Master e altri sul nodo Slave. Studiamo ora i Demoni Hadoop.

I principali demoni Hadoop sono:

1. Maestri Demoni

  • NomeNodo: È il demone principale in Hadoop HDFS. Mantiene lo spazio dei nomi del filesystem. Memorizza i metadati su ogni blocco dei file.
  • Gestore risorse: È il demone principale di YARN. Arbitra le risorse tra tutte le applicazioni in esecuzione nel cluster.

2. Demoni schiavi

  • Nodo dati: DataNode è il demone slave di Hadoop HDFS. Funziona su macchine slave. Memorizza dati o blocchi effettivi.
  • NodeManager: È il demone schiavo di YARN. Si occupa di tutti i singoli nodi di elaborazione nel cluster.

Come funziona Hadoop?

Hadoop archivia ed elabora i dati in modo distribuito attraverso il cluster di hardware di base. Per archiviare ed elaborare qualsiasi dato, il client invia i dati e il programma al cluster Hadoop.

Hadoop HDFS archivia i dati, MapReduce elabora i dati archiviati in HDFS e YARN divide le attività e assegna le risorse.

Esaminiamo ora questi componenti in dettaglio.

1. HDFS

I dati in Hadoop sono archiviati nel file system distribuito Hadoop. Ci sono due demoni in esecuzione in Hadoop HDFS che sono NameNode e DataNode.

a. Nodo Nome

NameNode è il demone principale in HDFS. Funziona sui nodi master. Mantiene lo spazio dei nomi del filesystem. NameNode non memorizza i dati effettivi. Memorizza i metadati, come le informazioni sui blocchi di file, i permessi dei file, le posizioni dei blocchi, ecc.

NameNode gestisce il DataNode e fornisce loro le istruzioni. NameNode riceve un battito cardiaco da DataNodes ogni 3 secondi, che specifica che il DataNode è attivo.

b. DataNode

DataNode è il demone slave in HDFS. I DataNode sono i nodi slave che memorizzano i dati aziendali effettivi. Sono responsabili di soddisfare le richieste di lettura/scrittura del cliente in base alle istruzioni di NameNode. I DataNode inviano messaggi di battito cardiaco al NameNode per assicurarsi che siano vivi.

c. NameNode secondario

È un altro demone in Hadoop HDFS. È il nodo di supporto per il NameNode primario. NameNode secondario scarica i log di modifica e il file Fsimage dal NameNode primario e applica periodicamente i log di modifica a Fsimage .

Quindi rinvia il file Fsimage aggiornato al NameNode. Quindi, se il NameNode primario non riesce, l'ultima Fsimage salvata sul NameNode secondario viene utilizzata per recuperare i metadati del file system.

Ogni volta che il client desidera leggere o scrivere dati su Hadoop HDFS, interagisce prima con il NameNode. NameNode verifica prima i privilegi del client e, se il client dispone di privilegi sufficienti, NameNode fornisce l'indirizzo dei DataNode da cui il client può leggere o scrivere dati.

Il file del client in HDFS è diviso in blocchi. La dimensione del blocco è di 128 MB per impostazione predefinita. DataNode memorizza i blocchi di file. Per fornire la tolleranza agli errori, HDFS crea repliche di blocchi a seconda del fattore di replica.

Per impostazione predefinita, il fattore di replica è 3, il che significa che 3 copie di un blocco sono archiviate in HDFS. HDFS memorizza le repliche del blocco su DataNode diversi seguendo l'algoritmo Rack Awareness.

Durante la lettura del file, se un DataNode va inattivo, il NameNode fornisce l'indirizzo di un altro DataNode contenente una replica del blocco da cui il client può leggere i suoi dati senza alcun downtime.

2. MappaRiduci

MapReduce è il livello di elaborazione in Hadoop. Elabora i dati in parallelo su più macchine nel cluster. Funziona dividendo l'attività in sottoattività indipendenti e le esegue in parallelo su vari DataNode.

MapReduce elabora i dati in due fasi, ovvero la fase Mappa e la fase di riduzione . L'ingresso e l'uscita di entrambe le fasi sono le coppie chiave e valore. Il tipo di chiave, coppie di valori è specificato dal programmatore tramite la classe InputFormat . Per impostazione predefinita, viene utilizzato il formato di immissione del testo.

Il programmatore specifica le due funzioni, ovvero funzione mappa e la funzione di riduzione . Nella funzione mappa, il programmatore scrive la logica di business per l'elaborazione dei dati.

Nella funzione Riduci, il programmatore scrive la logica per riassumere e aggregare l'output intermedio della funzione mappa e genera l'output.

Funzionamento di Hadoop MapReduce

Ogni volta che il client desidera eseguire un'elaborazione sui propri dati nel cluster Hadoop, prima archivia i dati in Hadoop HDFS e quindi scrive il programma MapReduce per l'elaborazione dei dati. Hadoop MapReduce funziona come segue:

1. Hadoop divide il lavoro in attività di due tipi, ovvero mappare le attività e ridurre le attività. YARN ha pianificato queste attività (che vedremo più avanti in questo articolo). Queste attività vengono eseguite su DataNode diversi.

2. L'input per il lavoro MapReduce è diviso in parti di dimensioni fisse chiamate divisioni di input.

3. Viene creata un'attività mappa che esegue una funzione mappa definita dall'utente per ogni record nella suddivisione di input per ogni suddivisione di input. Queste attività di mappatura vengono eseguite sui DataNode in cui risiedono i dati di input.

4. L'output dell'attività di mappatura è un output intermedio e viene scritto sul disco locale.

5. Gli output intermedi delle attività della mappa vengono mischiati e ordinati e quindi passati al riduttore.

6. Per una singola attività di riduzione, l'output intermedio ordinato di mapper viene passato al nodo in cui è in esecuzione l'attività di riduzione. Questi output vengono quindi uniti e quindi passati alla funzione di riduzione definita dall'utente.

7. La funzione di riduzione riassume l'output del mapper e genera l'output. L'uscita del riduttore è memorizzata su HDFS.

8. Per più funzioni di riduzione, l'utente specifica il numero di riduttori. Quando sono presenti più attività di riduzione, le attività di mappatura suddividono l'output, creando una partizione per ciascuna attività di riduzione.

FILO

YARN è il livello di gestione delle risorse in Hadoop. Pianifica l'attività nel cluster Hadoop e assegna risorse alle applicazioni in esecuzione nel cluster. È responsabile della fornitura delle risorse di calcolo necessarie per l'esecuzione delle applicazioni.

Ci sono due daemon YARN in esecuzione nel cluster Hadoop per servire i servizi principali YARN. Sono:

a. Responsabile risorse

È il demone principale di YARN. Viene eseguito sul nodo master per cluster per gestire le risorse nel cluster. Il ResourceManager ha due componenti principali che sono Scheduler e Application Manager.

Lo scheduler alloca le risorse a varie applicazioni in esecuzione nel cluster.

ApplicationManager riprende il lavoro inviato dal client, negozia il container per l'esecuzione dell'ApplicationMaster specifico dell'applicazione e riavvia il container ApplicationMaster in caso di errore.

b. Node Manager

NodeManager è il demone slave di YARN. Funziona su tutti i nodi slave nel cluster. È responsabile dell'avvio e della gestione dei container sui nodi. I contenitori eseguono i processi specifici dell'applicazione con un insieme limitato di risorse come memoria, CPU e così via.

Quando NodeManager si avvia, si annuncia al ResourceManager. Invia periodicamente un heartbeat a ResourceManager. Offre risorse al cluster.

c. Maestro dell'applicazione

L'ApplicationMaster per ogni applicazione negozia i contenitori dai programmi di pianificazione e tiene traccia dello stato del contenitore e monitora l'avanzamento del contenitore.

Un client invia una domanda a ResourceManager. Il ResourceManager contatta il NodeManager che avvia e monitora i contenitori di calcolo sui nodi del cluster. Il contenitore esegue ApplicationMaster.

L'attività MapReduce e ApplicationMaster vengono eseguiti in contenitori pianificati dal ResourceManager e gestiti dai NodeManager.

Riassumiamo ora come funziona Hadoop internamente:

1. HDFS divide i dati di input del client in blocchi di dimensioni 128 MB. A seconda del fattore di replica, vengono create repliche di blocchi. I blocchi e le relative repliche sono archiviati su DataNode diversi.

2. Una volta che tutti i blocchi sono stati archiviati su HDFS DataNode, l'utente può elaborare i dati.

3. Per elaborare i dati, il client invia il programma MapReduce a Hadoop.

4. ResourceManager ha quindi pianificato il programma inviato dall'utente sui singoli nodi del cluster.

5. Una volta completata l'elaborazione di tutti i nodi, l'output viene riscritto nell'HDFS.

Riepilogo

In questo articolo abbiamo studiato l'intero funzionamento di Hadoop. Spero che dopo aver letto questo articolo tu capisca come Hadoop archivia ed elabora enormi quantità di dati.

L'articolo spiega anche come vengono pianificate le risorse tra le applicazioni nelle risorse. L'articolo descrive i principali demoni in esecuzione nel cluster Hadoop e i componenti principali di Hadoop.

Spero che tu capisca come funziona Hadoop internamente.

Continua ad imparare!!