Elaborazione dei dati in Hadoop: spiegazione dei componenti di Hadoop [2022]
Pubblicato: 2021-01-03Con la crescita esponenziale del World Wide Web nel corso degli anni, anche i dati generati sono cresciuti in modo esponenziale. Ciò ha portato alla creazione di un'enorme quantità di dati ed è stato difficile elaborare e archiviare questa enorme quantità di dati con i tradizionali sistemi di database relazionali.
Inoltre, i dati creati non erano solo in forma strutturata ma anche in formato non strutturato come video, immagini, ecc. Questo tipo di dati non può essere elaborato da database relazionali. Per contrastare questi problemi, è nato Hadoop.
Prima di approfondire l'elaborazione dei dati di Hadoop, diamo una panoramica di Hadoop e dei suoi componenti. Apache Hadoop è un framework che consente l'archiviazione e l'elaborazione di enormi quantità di dati in modo rapido ed efficiente. Può essere utilizzato per archiviare enormi quantità di dati strutturati e non strutturati. Ulteriori informazioni sull'ecosistema e sui componenti di hadoop.
Gli elementi fondamentali di Hadoop sono i seguenti: –
Sommario
Elementi costitutivi di Hadoop
1. HDFS (il livello di archiviazione)
Come suggerisce il nome, Hadoop Distributed File System è il livello di archiviazione di Hadoop ed è responsabile della memorizzazione dei dati in un ambiente distribuito (configurazione master e slave). Suddivide i dati in diversi blocchi di dati e li archivia su diversi nodi di dati. Questi blocchi di dati vengono anche replicati su diversi nodi di dati per prevenire la perdita di dati quando uno dei nodi si interrompe.
Ha due processi principali in esecuzione per l'elaborazione dei dati: –

un. NameNode
È in esecuzione sulla macchina master. Salva le posizioni di tutti i file archiviati nel file system e tiene traccia di dove risiedono i dati nel cluster, ovvero memorizza i metadati dei file. Quando le applicazioni client vogliono eseguire determinate operazioni sui dati, interagisce con il NameNode. Quando il NameNode riceve la richiesta, risponde restituendo un elenco di server Data Node in cui risiedono i dati richiesti.
B. DataNode
Questo processo viene eseguito su ogni macchina slave. Una delle sue funzionalità consiste nel memorizzare ogni blocco di dati HDFS in un file separato nel suo file system locale. In altre parole, contiene i dati effettivi sotto forma di blocchi. Invia periodicamente segnali di heartbeat e attende la richiesta dal NameNode per accedere ai dati.
2. MapReduce (il livello di elaborazione)
È una tecnica di programmazione basata su Java che viene utilizzata in aggiunta al framework Hadoop per un'elaborazione più rapida di enormi quantità di dati. Elabora questi enormi dati in un ambiente distribuito utilizzando molti nodi di dati che consentono l'elaborazione parallela e l'esecuzione più rapida delle operazioni in modo tollerante agli errori.
Un processo MapReduce divide il set di dati in più blocchi di dati che vengono ulteriormente convertiti in coppie chiave-valore per essere elaborati dai mappatori. Il formato grezzo dei dati potrebbe non essere idoneo al trattamento. Pertanto, i dati di input compatibili con la fase della mappa vengono generati utilizzando la funzione InputSplit e RecordReader.
InputSplit è la rappresentazione logica dei dati che devono essere elaborati da un singolo mapper. RecordReader converte queste suddivisioni in record che assumono la forma di coppie chiave-valore. Fondamentalmente converte la rappresentazione orientata ai byte dell'input in una rappresentazione orientata ai record.
Questi record vengono quindi inviati ai mappatori per l'ulteriore elaborazione dei dati. I lavori MapReduce consistono principalmente in tre fasi: la fase Mappa, la fase Shuffle e la fase Riduci.
un. Fase della mappa
È la prima fase del trattamento dei dati. L'attività principale nella fase della mappa è elaborare ogni input dal RecordReader e convertirlo in tuple intermedie (coppie chiave-valore). Questo output intermedio viene archiviato nel disco locale dai mappatori.
I valori di queste coppie chiave-valore possono differire da quelli ricevuti come input da RecordReader. La fase della mappa può contenere anche combinatori che vengono anche chiamati riduttori locali. Eseguono aggregazioni sui dati ma solo nell'ambito di un mappatore.

Poiché i calcoli vengono eseguiti su diversi nodi di dati, è essenziale che tutti i valori associati alla stessa chiave siano uniti in un riduttore. Questa attività viene eseguita dal partizionatore. Esegue una funzione hash su queste coppie chiave-valore per unirle insieme.
Garantisce inoltre che tutte le attività siano suddivise in modo uniforme sui riduttori. I partizionatori generalmente entrano in gioco quando lavoriamo con più di un riduttore.
B. Fase di mescolamento e smistamento
Questa fase trasferisce l'output intermedio ottenuto dai mappatori ai riduttori. Questo processo è chiamato rimescolamento. Anche l'output dei mappatori viene ordinato prima di trasferirlo ai riduttori. L'ordinamento avviene sulla base delle chiavi nelle coppie chiave-valore. Aiuta i riduttori a eseguire i calcoli sui dati anche prima che vengano ricevuti tutti i dati e alla fine aiuta a ridurre il tempo richiesto per i calcoli.
Quando le chiavi vengono ordinate, ogni volta che il riduttore ottiene una chiave diversa come input, inizia a eseguire le attività di riduzione sui dati ricevuti in precedenza.
C. Riduci la fase
L'uscita della fase della mappa funge da input per la fase di riduzione. Prende queste coppie chiave-valore e applica su di esse la funzione di riduzione per produrre il risultato desiderato. Le chiavi ei valori associati alla chiave vengono passati alla funzione di riduzione per eseguire determinate operazioni.
Possiamo filtrare i dati o combinarli per ottenere l'output aggregato. Posta l'esecuzione della funzione di riduzione, può creare zero o più coppie chiave-valore. Questo risultato viene riscritto nel file system distribuito Hadoop.
3. YARN (il livello di gestione)
Yet Another Resource Navigator è il componente di gestione delle risorse di Hadoop. Esistono processi in background in esecuzione su ciascun nodo (Node Manager sulle macchine slave e Resource Manager sul nodo master) che comunicano tra loro per l'allocazione delle risorse. Il Resource Manager è il fulcro del livello YARN che gestisce le risorse tra tutte le applicazioni e trasmette le richieste al Node Manager.

Il Node Manager monitora l'utilizzo delle risorse come memoria, CPU e disco della macchina e trasmette lo stesso al Resource Manager. È installato su ogni Data Node ed è responsabile dell'esecuzione delle attività sui Data Node.
Da leggere: I 10 migliori strumenti Hadoop per ingegneri di big data
Conclusione
L'intero flusso di lavoro per l'elaborazione dei dati su Hadoop può essere riassunto come segue: –
- InputSplit ; divide logicamente i dati che risiedono su HDFS in diversi blocchi di dati. La decisione su come dividere i dati viene presa da Inputformat .
- I dati vengono convertiti in coppie chiave-valore da RecordReader. RecordReader converte i dati orientati ai byte in dati orientati ai record. Questi dati servono come input per il mapper.
- Il mapper, che non è altro che una funzione definita dall'utente, elabora queste coppie chiave-valore e genera coppie chiave-valore intermedie per un'ulteriore elaborazione.
- Queste coppie vengono ridotte localmente (nell'ambito di un mappatore) dai combinatori per ridurre la quantità di dati da trasferire dal mappatore al riduttore.
- Il partizionatore garantisce che tutti i valori con la stessa chiave siano fusi insieme nello stesso riduttore e che i compiti siano distribuiti uniformemente tra i riduttori.
- Queste coppie chiave-valore intermedie vengono quindi mescolate ai riduttori e ordinate in base alle chiavi. Questo risultato viene fornito ai riduttori come input.
- La funzione di riduzione aggrega i valori per ciascuna chiave e il risultato viene archiviato nuovamente nell'HDFS utilizzando RecordWriter. Prima di riscriverlo nell'HDFS, il formato in cui devono essere scritti i dati viene deciso da Outputformat .
Se sei interessato a saperne di più sui Big Data, dai un'occhiata al nostro PG Diploma in Software Development Specialization nel programma Big Data, progettato per professionisti che lavorano e fornisce oltre 7 casi di studio e progetti, copre 14 linguaggi e strumenti di programmazione, pratiche pratiche workshop, oltre 400 ore di apprendimento rigoroso e assistenza all'inserimento lavorativo con le migliori aziende.
Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.