hadoop hdfs hadoop distributed file system
Questo tutorial spiega Hadoop HDFS: file system distribuito Hadoop, componenti e architettura del cluster. Imparerai anche l'algoritmo di consapevolezza del rack:
Come abbiamo appreso nel tutorial precedente, il problema più grande con i Big Data è archiviarli in un sistema esistente. E anche se in qualche modo ne abbiamo memorizzato una parte in un sistema esistente, l'elaborazione di BigData ha richiesto anni.
I risultati che volevi in pochi minuti richiedevano settimane o forse mesi e per questo motivo il valore di quel risultato è andato perso.
=> Guarda qui la semplice serie di formazione BigData.
Cosa imparerai:
File system distribuito Hadoop
Per risolvere questo problema o per far fronte a questo problema ora abbiamo HADOOP. Hadoop ha risolto questo problema con i big data utilizzando Hadoop HDFS.
Hadoop HDFS risolto il problema di archiviazione di Big Data e Riduzione mappa Hadoop risolto le problematiche relative all'elaborazione di parte dei Big Data.
Ora, sappiamo che Hadoop ha essenzialmente un file system distribuito ... MA PERCHÉ?
come eseguire il file jar java
Perché Hadoop è un file system distribuito?
Proviamo a capire che cos'è un file system distribuito e a comprendere i vantaggi del file system distribuito.
File system distribuito
Facciamo un esempio di lettura di 1 TB di dati. Abbiamo un server che è un buon server di fascia alta che ha 4 canali I / O (Input Output) e ogni canale ha una larghezza di banda di 100 MB / s, utilizzando questa macchina, sarai in grado di leggere questi dati da 1 TB in 43 Minuti.
Ora se portiamo 10 numeri di macchine esattamente come questa, cosa succederà?
Tempo ridotto a 4,3 minuti esatti. È perché l'intero sforzo è stato suddiviso in 10 macchine ed è per questo che il tempo necessario per elaborare 1 TB di dati si riduce a 1/10thcioè 4,3 minuti.
Allo stesso modo, quando consideriamo BigData, quei dati vengono suddivisi in più blocchi di dati e in realtà li elaboriamo separatamente ed è per questo che Hadoop ha scelto il file system distribuito rispetto a un file system centralizzato.
Componenti di Hadoop
Hadoop HDFS ha 2 componenti principali per risolvere i problemi con BigData.
- Il primo componente è Hadoop HDFS per archiviare i Big Data.
- Il secondo componente è Hadoop Map Reduce to Process Big Data.
Ora, quando vediamo l'architettura di Hadoop (immagine sotto), ha due ali dove si trova l'ala sinistra 'Conservazione' e la destra è 'In lavorazione' . Ciò significa che l'ala sinistra è l'HDFS, ovvero il file system di distribuzione di Hadoop, mentre l'ala destra è YARN e Map Reduce, ovvero la parte di elaborazione.
Utilizzando HDFS, Hadoop ci consente di archiviare Big Data e utilizzando YARN & Map Reduce, Hadoop ci consente di elaborare gli stessi Big Data che stiamo archiviando in HDFS.
Come puoi vedere nell'immagine sopra, HDFS ha due demoni principali oppure puoi chiamarli come processi o thread che non sono altro che processi JAVA, ovvero in esecuzione all'interno di una JVM: NameNode e DataNode.
NameNode è un demone master che gira su Master Machine, ovvero una macchina di fascia alta essenzialmente e DataNode è una macchina slave che gira su hardware comune. Possono esserci più DataNode poiché le macchine slave sono più di una macchina master.
Quindi abbiamo sempre un NameNode e più DataNode in esecuzione su macchine slave.
Allo stesso modo, abbiamo YARN sull'altro lato che ha ancora due demoni, uno è il Resource Manager che gira sulla macchina master e il Node Manager che gira sulla macchina slave proprio come il DataNode. Quindi ogni macchina slave ha due daemon: uno è il DataNode e l'altro è il Node Manager.
La macchina master ha il NameNode in esecuzione e Resource Manager in esecuzione. NameNode è responsabile della gestione dei dati sul file system distribuito Hadoop e il Resource Manager è responsabile dell'esecuzione delle attività di elaborazione su questi dati memorizzati.
NameNode e DataNode
Approfondiremo l'architettura HDFS e quindi è importante capire cos'è un NameNode e un DataNode poiché questi sono i due demoni principali che eseguono effettivamente HDFS interamente.
NameNode
- È un Master Daemon.
- Gestione e manutenzione dei DataNode.
- Registra i metadati.
- Riceve heartbeat e blocca i rapporti da tutti i DataNode.
DataNode
- È un demone schiavo.
- I dati effettivi vengono memorizzati qui.
- Serve richieste di lettura e scrittura da parte dei client.
Concentrati solo sul diagramma, come puoi vedere c'è un NameNode macchina centralizzato che controlla vari DataNode presenti, ad esempio hardware di base. Quindi Name Node non è altro che il Master Daemon che mantiene tutti i DataNode.
Questi NameNode contengono tutte le informazioni sui dati archiviati nel DataNode. DataNode, come suggerisce il nome stesso, archivia i dati presenti nel cluster Hadoop.
NameNode contiene solo le informazioni sui dati archiviati su quale DataNode. Quindi, quello che possiamo dire è che NameNode memorizza i metadati dei dati archiviati sui DataNode.
DataNode esegue anche un'altra attività, ovvero invia regolarmente l'heartbeat al NameNode. Gli heartbeat effettivamente dicono al NameNode che questo DataNode è ancora vivo.
Per esempio, DataNodes invia un heartbeat al NameNode e in questo modo NameNode ha l'immagine che questi DataNode sono vivi, quindi NameNode può utilizzare questi DataNode per memorizzare più dati o leggere i dati da questi DataNode.
Ora passiamo al DataNode, DataNode non è altro che i demoni slave che in realtà stanno archiviando i dati inviati al cluster Hadoop. Questi DataNode sono quelli che effettivamente servono la richiesta di lettura e scrittura effettuata dai client.
Se qualcuno desidera leggere i dati dal cluster Hadoop, queste richieste vengono effettivamente elaborate dai DataNode in cui risiedono i dati.
Architettura cluster Hadoop
Nell'argomento precedente relativo a NameNode e DataNode, abbiamo utilizzato il termine 'Hadoop Cluster'. Diamo una rapida occhiata a che cos'è esattamente?
L'immagine sopra mostra la panoramica di un'architettura cluster Hadoop. Hadoop Cluster non è altro che una topologia Master-Slave, in cui è presente una Master Machine come puoi vedere in alto, ovvero Hadoop Cluster. In questa macchina master sono in esecuzione un NameNode e il Resource Manager, ovvero i Master Daemons.
La Master Machine è collegata a tutte le Slave Machine utilizzando i Core Switch, è perché questi DataNode sono effettivamente immagazzinati in vari rack, così come puoi vedere Computer 1, Computer 2, Computer 3 fino a Computer N. Questo non è altro che lo Slave Macchine o DataNode e sono tutti presenti in un rack.
'Il rack è in realtà un gruppo di macchine che sono presenti fisicamente in una posizione particolare e sono collegate tra loro.'
Pertanto la larghezza di banda della rete tra ciascuna macchina è la minima possibile. Allo stesso modo, ci sono più rack, tuttavia, non sono presenti nella stessa posizione, quindi, possiamo avere un numero 'n' di rack e possiamo anche avere un numero 'n' di DataNode o computer o macchine slave all'interno di questi rack.
Questo è il modo in cui le macchine slave sono effettivamente distribuite sul cluster, tuttavia, allo stesso tempo sono collegate tra loro.
Come vengono archiviati i dati in HDFS?
Ora ci stiamo muovendo lentamente nei dettagli di come funziona HDFS. Qui esploreremo l'architettura di HDFS.
Quando diciamo, archiviare un file in HDFS, i dati vengono archiviati come blocchi in HDFS. L'intero file non è archiviato in HDFS, è perché come sai Hadoop è un file system distribuito.
Quindi, se hai una dimensione del file di forse 1 PB (Peta Byte), questo tipo di archiviazione non è presente in una singola macchina poiché il cluster Hadoop è realizzato utilizzando l'hardware di base. L'hardware in una singola macchina sarebbe qualcosa di circa 1 TB o 2 TB.
Pertanto, l'intero file deve essere suddiviso in blocchi di dati chiamati blocchi HDFS.
- Ogni file viene archiviato su HDFS come blocchi.
- La dimensione predefinita di ogni blocco è di circa 128 MB in Apache Hadoop 2.x (e 64 MB nella versione precedente, ad esempio Apache Hadoop 1.x).
- Esiste una funzione per aumentare o diminuire la dimensione del file dei blocchi utilizzando il file di configurazione, ad esempio hdfssite.xml, fornito con il pacchetto Hadoop.
Facciamo un esempio per capire questo meccanismo e vedere come vengono creati questi blocchi.
Consideriamo un file di 248 MB qui, ora se suddividiamo questo file o se spostiamo questo file in Hadoop Cluster, ad esempio 2.x, questo file verrà suddiviso in un blocco, ad esempio Blocco A di 128 MB e un altro Blocco B di 120 MB.
Come puoi vedere il primo bloccoèdi 128 MB cioè la primissima lastra viene tagliata laggiù ed è per questo che l'altro bloccoèdi 120 MB e non di 128 MB cioè non sprecherà spazio se la dimensione del file rimanente è più piccola rispetto alla dimensione del blocco predefinito.
Ora abbiamo un altro problema di fronte a noi, ovvero è sicuro avere una singola copia di ogni blocco?
VPN Cina come funziona
La risposta è NO perché c'è la possibilità che il sistema possa fallire e non è altro che hardware di base a causa del quale potremmo essere in grossi guai. Per superare questo problema, Hadoop HDFS ha una buona soluzione, ad es. 'La replica del blocco'.
Replica in blocchi dell'architettura Hadoop
Hadoop crea le repliche di ogni blocco che viene memorizzato nel file system distribuito Hadoop ed è così che Hadoop è un sistema tollerante ai guasti, ovvero anche se il tuo sistema fallisce o il tuo DataNode fallisce o una copia è persa, avrai più altre copie presenti negli altri DataNode o negli altri server in modo da poter sempre scegliere quelle copie da lì.
Come si vede nel diagramma sopra che rappresenta la replica a blocchi, ci sono cinque diversi blocchi di un file, cioè Block 1, 2,3,4,5. Controlliamo prima con il Blocco 1 e troverai copie del Blocco 1 nel Nodo 1, Nodo 2 e Nodo 4.
Allo stesso modo, il Blocco 2 ha anche tre copie, ovvero Nodo 2, Nodo 3 e Nodo 4 e quindi lo stesso per il Blocco 3, 4 e 5 nei rispettivi Nodi.
Quindi, a parte le repliche che vengono create, ogni blocco è stato replicato tre volte, ovvero Hadoop segue un fattore di replica predefinito di tre, il che significa che qualsiasi file copiato nel file system di distribuzione di Hadoop viene replicato tre volte.
In altre parole, se copi 1 GB di un file in Hadoop Distribution File System, in realtà memorizza 3 GB di un file in HDFS. La parte buona è che il fattore di replica predefinito è modificabile apportando una modifica ai file di configurazione di Hadoop.
In che modo Hadoop decide dove conservare le repliche?
Hadoop in realtà segue il concetto di Rack Awareness per decidere dove archiviare quale replica di un blocco.
Di seguito è riportato il diagramma che rappresenta l'algoritmo di consapevolezza del rack.
Sono disponibili tre diversi rack, ovvero Rack-1, Rack-2 e Rack-3.
Rack-1 ha quattro DataNode e così anche Rack-2 e Rack-3, quindi in totale l'intero Hadoop Cluster sarà composto da tutti e tre i rack e ci saranno 12 DataNode.
Supponiamo che il blocco A venga copiato sul DataNode 1 nel Rack-1, secondo il concetto di Rack Awareness, la replica del Blocco A non può essere creata nello stesso rack e deve essere creata in qualsiasi altro rack oltre al Rack-1 come il file principale esiste già nel Rack-1.
Se creiamo le repliche del Blocco A nello stesso Rack-1 e nel caso in cui l'intero Rack-1 fallisca, sicuramente perderemo i dati, quindi le repliche devono essere memorizzate in qualsiasi altro rack ma non nel Rack-1.
Quindi la replica verrà creata nei DataNode 6 e 8 del Rack-2. Allo stesso modo, per il blocco B e il blocco C, le repliche verranno create in rack diversi, come mostrato nel diagramma sopra.
Conclusione
Abbiamo imparato con i seguenti suggerimenti da questo tutorial:
- Hadoop HDFS risolve il problema di archiviazione di BigData.
- Hadoop Map Reduce risolve i problemi relativi all'elaborazione dei BigData.
- NameNode è un Master Daemon e viene utilizzato per gestire e mantenere i DataNode.
- DataNode è un demone slave ei dati effettivi vengono archiviati qui. Serve per leggere e scrivere le richieste dei client.
- In Hadoop Cluster, un rack è in realtà un gruppo di macchine che sono presenti fisicamente in una posizione particolare e sono collegate tra loro.
- Ogni file viene archiviato su HDFS come blocchi.
- La dimensione predefinita di ogni blocco è di circa 128 MB in Apache Hadoop 2.x (64 MB nella versione precedente, ad esempio Apache Hadoop 1.x)
- Esiste una funzione per aumentare o diminuire la dimensione del file dei blocchi utilizzando il file di configurazione, ad esempio hdfssite.xml, fornito con il pacchetto Hadoop.
Nel prossimo tutorial su HDFS, impareremo l'architettura HDFS e i meccanismi di lettura e scrittura.
=> Visita qui per vedere la serie di formazione BigData per tutti.
Lettura consigliata
- Cos'è Hadoop? Esercitazione su Apache Hadoop per principianti
- Manipolazione dei file in Unix: panoramica del file system Unix
- Caratteri speciali Unix o metacaratteri per la manipolazione dei file
- Autorizzazioni di accesso ai file Unix: Unix Chmod, Chown e Chgrp
- Ranorex Test Suite, creazione di moduli di test, file UserCode, Xpath e Data Binding
- Oggetti file VBScript: CopyFile, DeleteFile, OpenTextFile, Read and Write Text File
- File Input Output Operazioni in C ++
- Distribuzione Java: creazione ed esecuzione di file JAR Java