Introduzione ai componenti di Hadoop

I componenti Hadoop sono principalmente HDFS, Map Reduce, Yarn. Oggi viviamo in un'era digitale in cui il tasso di produzione dei dati è molto elevato e stiamo producendo 2, 5 quintilioni di dati al giorno. Sebbene la capacità di archiviazione dei dischi stia aumentando, ma il tasso di ricerca non è aumentato per questo volume di dati. Per ovviare a questo, dobbiamo leggere i dati parallelamente, per raggiungere questo obiettivo in Hadoop abbiamo un HDFS (Hadoop Distributed File System) in cui i set di dati sono memorizzati come blocchi in HDFS (per maggiori dettagli fare riferimento alla sezione HDFS) per leggere i dati in parallelo e ottenere maggiore velocità di elaborazione. Il trattamento dei dati viene eseguito per recuperare o prevedere alcune informazioni significative o per ottenere tendenze o modelli. Il processo MapReduce viene utilizzato per effettuare le informazioni desiderate. Mappa e Riduci sono le due diverse fasi di elaborazione dei dati.

Principali componenti di Hadoop

I componenti principali di Hadoop sono descritti di seguito:

1. Hadoop Distributed File System (HDFS)

HDFS è il livello di archiviazione per Big Data, è un cluster di molte macchine, i dati memorizzati possono essere utilizzati per l'elaborazione tramite Hadoop. Una volta che i dati vengono trasferiti in HDFS, possiamo elaborarli in qualsiasi momento, fino al momento in cui elaboriamo i dati risiederanno in HDFS fino a quando non elimineremo i file manualmente. HDFS memorizza i dati come blocco, la dimensione minima del blocco è 128 MB in Hadoop 2.x e per 1.x era 64 MB. HDFS replica i blocchi per i dati disponibili se i dati sono archiviati in una macchina e se la macchina fallisce i dati non vengono persi ma per evitarli, i dati vengono replicati su macchine diverse. Il fattore di replica di default è 3 e possiamo cambiare in HDFS-site.xml o usando il comando Hadoop fs -strep -w 3 / dir replicando abbiamo i blocchi su macchine diverse per l'alta disponibilità.
HDFS è un'architettura master-slave, è NameNode come master e Data Node come slave. NameNode è la macchina in cui sono memorizzati tutti i metadati di tutti i blocchi memorizzati nel DataNode.

2. FILATO

YARN è stato introdotto in Hadoop 2.x, prima che Hadoop avesse un JobTracker per la gestione delle risorse. Job Tracker era il master e aveva un Task Tracker come slave. Job Tracker era quello che si occupava di programmare i lavori e allocare le risorse. Task Tracker era usato per occuparsi delle attività Map e Reduce e lo stato veniva periodicamente aggiornato su Job Tracker. With is a type of resource manager aveva un limite di scalabilità e anche l'esecuzione simultanea delle attività aveva un limite. Questi problemi sono stati risolti in YARN e si sono occupati dell'allocazione delle risorse e della pianificazione dei lavori su un cluster. L'esecuzione di una mappa Ridurre il lavoro necessita di risorse in un cluster, per ottenere le risorse allocate per il lavoro YARN aiuta. YARN determina quale lavoro viene eseguito e quale macchina viene eseguita. Ha tutte le informazioni dei core e della memoria disponibili nel cluster, tiene traccia del consumo di memoria nel cluster. Interagisce con il NameNode sui dati in cui risiede per prendere la decisione sull'allocazione delle risorse.

3. MapReduce

L'ecosistema Hadoop è un modo economico, scalabile e flessibile di lavorare con set di dati così grandi. Hadoop è un framework che utilizza un particolare modello di programmazione, chiamato MapReduce, per suddividere le attività di calcolo in blocchi che possono essere distribuiti su un cluster di macchine di consumo utilizzando Hadoop Distributed Filesystem (HDFS).

MapReduce è un due compiti diversi Mappa e Riduci, Mappa precede la fase di riduzione. Come suggerisce il nome, la fase Map mappa i dati in coppie chiave-valore, come tutti sappiamo Hadoop utilizza i valori chiave per l'elaborazione. La fase di riduzione è la fase in cui abbiamo la logica effettiva da implementare. Oltre a queste due fasi, implementa anche la fase di riordino e selezione.

1. Mapper

Mapper è la classe in cui il file di input viene convertito in coppie di chiavi e valori per un'ulteriore elaborazione. Durante la lettura dei dati viene letto nei valori chiave solo dove la chiave è l'offset dei bit e il valore è l'intero record.

Ad esempio, abbiamo un file Diary.txt in cui sono scritte due righe, ovvero due record.

Questo è un giorno meraviglioso che dovremmo goderci qui, l'offset per 't' è 0 e per 'w' è 33 (anche gli spazi bianchi sono considerati come un carattere), quindi il mappatore leggerà i dati come coppia chiave-valore, as (chiave, valore), (0, questo è un giorno meraviglioso), (33, dovremmo divertirci)

2. Riduttore

Reducer è la classe che accetta chiavi e valori dall'output della fase dei mappatori. Chiavi e valori generati dal mapper sono accettati come input nel riduttore per ulteriori elaborazioni. Reducer accetta dati da più mappatori. Il riduttore aggrega quei dati intermedi a un numero ridotto di chiave e valori che è l'output finale, vedremo questo nell'esempio.

3. Driver

Oltre alla classe del mapper e del riduttore, abbiamo bisogno di un'altra classe che sia la classe Driver. Questo codice è necessario per MapReduce in quanto è il ponte tra il framework e la logica implementata. Specifica la configurazione, il percorso dei dati di input, il percorso di archiviazione dell'output e, soprattutto, quali classi di mapper e riduttori devono essere implementate, anche molte altre configurazioni devono essere impostate in questa classe. ad es. nella classe del driver, possiamo specificare il separatore per il file di output come mostrato nella classe del driver dell'esempio seguente.

Esempio

Considera che abbiamo un set di dati di un'agenzia di viaggi, ora dobbiamo calcolare dai dati che quante persone scelgono di viaggiare verso una determinata destinazione. Per raggiungere questo obiettivo dovremo prendere la destinazione come chiave e per il conteggio, prenderemo il valore come 1. Quindi, nella fase del mappatore, mapperemo la destinazione sul valore 1. Ora nella fase di shuffle e ordinamento dopo il mappatore, mapperà tutti i valori su una chiave particolare. Ad esempio, se abbiamo una destinazione come MAA, abbiamo mappato 1 e abbiamo anche 2 occorrenze dopo lo shuffle e l'ordinamento otterremo MAA, (1, 1) dove (1, 1) è il valore. Ora nella fase del riduttore, abbiamo già implementato una logica nella fase del riduttore per aggiungere i valori per ottenere il conteggio totale del biglietto prenotato per la destinazione. Questo è il flusso di MapReduce.

Di seguito è riportato lo screenshot del programma implementato per l'esempio sopra.

1. Classe del conducente

2. Classe Mapper

3. Classe di riduzione

Esecuzione dell'Hadoop

Per l'esecuzione di Hadoop, dobbiamo prima costruire il vaso e poi possiamo eseguire usando il comando seguente Hadoop jar eample.jar /input.txt /output.txt

Conclusione

Qui abbiamo discusso i componenti principali di Hadoop come HDFS, Map Reduce e YARN. Si tratta di un framework di elaborazione cluster distribuito che consente di archiviare ed elaborare i dati e di eseguire le analisi richieste sui dati acquisiti. Hadoop è flessibile, affidabile in termini di dati poiché i dati vengono replicati e scalabili, ovvero possiamo aggiungere più macchine al cluster per l'archiviazione e l'elaborazione dei dati.

Articoli consigliati

Questa è stata una guida ai componenti di Hadoop. Qui abbiamo discusso i componenti principali di Hadoop con esempi. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Introduzione all'architettura JDBC
  2. Che cos'è Hadoop Cluster?
  3. Che cos'è MapReduce in Hadoop?
  4. Cosa sono i Big Data e Hadoop
  5. Comandi fs di Hadoop

Categoria: