Sommario:
Video: Apache Spark Tutorial | Spark Tutorial for Beginners | Apache Spark Training | Edureka 2024
Il file system distribuito Hadoop è un approccio versatile, flessibile e in cluster per la gestione dei file in un ambiente di big data. HDFS non è la destinazione finale per i file. Piuttosto, si tratta di un servizio dati che offre un set unico di funzionalità necessarie quando i volumi e la velocità dei dati sono elevati. Poiché i dati vengono scritti una volta e quindi letti molte volte in seguito, anziché le costanti scritture di lettura di altri file system, HDFS è una scelta eccellente per supportare l'analisi dei big data.
Big data NameNodes
HDFS funziona spezzando file di grandi dimensioni in pezzi più piccoli chiamati blocchi . I blocchi sono memorizzati su nodi dati ed è responsabilità del NameNode sapere quali blocchi su quali nodi dati compongono il file completo. Il NameNode funge anche da "agente del traffico", gestendo tutti gli accessi ai file.
La raccolta completa di tutti i file nel cluster viene talvolta definita spazio dei nomi del file system . È il lavoro del NameNode per gestire questo spazio dei nomi.
Anche se esiste una forte relazione tra il NameNode e i nodi di dati, operano in modo "debolmente accoppiato". Ciò consente agli elementi del cluster di comportarsi in modo dinamico, aggiungendo server all'aumentare della domanda. In una configurazione tipica, si trova un NameNode e possibilmente un nodo dati in esecuzione su un server fisico nel rack. Altri server eseguono solo i nodi dati.
I nodi dati comunicano tra loro in modo che possano cooperare durante le normali operazioni del file system. Ciò è necessario perché è probabile che i blocchi per un file vengano archiviati su più nodi di dati. Poiché il NameNode è così critico per il corretto funzionamento del cluster, può e deve essere replicato per evitare un errore di un singolo punto.
Nodi di dati di grandi dimensioni
I nodi di dati non sono intelligenti, ma sono resilienti. All'interno del cluster HDFS, i blocchi di dati vengono replicati su più nodi di dati e l'accesso è gestito dal NameNode. Il meccanismo di replica è progettato per l'efficienza ottimale quando tutti i nodi del cluster vengono raccolti in un rack. In effetti, il NameNode utilizza un "ID rack" per tenere traccia dei nodi di dati nel cluster.
I nodi dati forniscono anche messaggi "heartbeat" per rilevare e garantire la connettività tra NameNode e i nodi dati. Quando un heartbeat non è più presente, il NameNode cancella il nodo dati dal cluster e continua a funzionare come se nulla fosse accaduto. Quando l'heartbeat ritorna, viene aggiunto al cluster in modo trasparente rispetto all'utente o all'applicazione.
L'integrità dei dati è una caratteristica chiave. HDFS supporta una serie di funzionalità progettate per garantire l'integrità dei dati. Come ci si potrebbe aspettare, quando i file vengono suddivisi in blocchi e quindi distribuiti su server diversi nel cluster, qualsiasi variazione nell'operazione di qualsiasi elemento potrebbe influire sull'integrità dei dati. HDFS utilizza i registri delle transazioni e la convalida del checksum per garantire l'integrità all'interno del cluster.
I registri delle transazioni tengono traccia di ogni operazione e sono efficaci nel controllo o nella ricostruzione del file system in caso di problemi.
Le convalide dei checksum vengono utilizzate per garantire il contenuto dei file in HDFS. Quando un client richiede un file, può verificare il contenuto esaminando il suo checksum. Se il checksum corrisponde, l'operazione del file può continuare. In caso contrario, viene segnalato un errore. I file di checksum sono nascosti per evitare la manomissione.
I nodi dati utilizzano i dischi locali nel server commodity per la persistenza. Tutti i blocchi di dati sono memorizzati localmente, principalmente per motivi di prestazioni. I blocchi di dati vengono replicati su più nodi di dati, quindi l'errore di un server potrebbe non danneggiare necessariamente un file. Il grado di replica, il numero di nodi di dati e lo spazio dei nomi HDFS vengono stabiliti quando il cluster è implementato.
HDFS per i big data
HDFS risolve i problemi dei big data rompendo i file in una raccolta correlata di blocchi più piccoli. Questi blocchi sono distribuiti tra i nodi dati nel cluster HDFS e sono gestiti dal NameNode. Le dimensioni dei blocchi sono configurabili e di solito sono 128 megabyte (MB) o 256 MB, il che significa che un file da 1 GB consuma otto blocchi da 128 MB per le sue esigenze di archiviazione di base.
HDFS è resiliente, quindi questi blocchi vengono replicati in tutto il cluster in caso di errore del server. In che modo HDFS tiene traccia di tutti questi pezzi? La risposta breve è il file system metadati .
I metadati sono definiti come "dati sui dati. "Pensa ai metadati HDFS come modello per fornire una descrizione dettagliata di quanto segue:
-
Quando il file è stato creato, consultato, modificato, cancellato e così via
-
Dove i blocchi del file sono memorizzati nel cluster < Chi ha i diritti per visualizzare o modificare il file
-
Quanti file sono memorizzati nel cluster
-
Quanti nodi dati esistono nel cluster
-
La posizione del log delle transazioni per il cluster
-
HDFS i metadati sono memorizzati nel NameNode e mentre il cluster è in funzione, tutti i metadati vengono caricati nella memoria fisica del server NameNode. Come ci si potrebbe aspettare, maggiore è il cluster, maggiore è il footprint dei metadati.
Che cosa fa esattamente un server di blocco? Controlla il seguente elenco:
Memorizza i blocchi di dati nel file system locale del server. HDFS è disponibile su diversi sistemi operativi e si comporta allo stesso modo su Windows, Mac OS o Linux.
-
Memorizza i metadati di un blocco nel file system locale in base al modello di metadati nel NameNode.
-
Esegue convalide periodiche dei checksum dei file.
-
Invia report regolari al NameNode su quali blocchi sono disponibili per le operazioni sui file.
-
Fornisce metadati e dati ai clienti su richiesta. HDFS supporta l'accesso diretto ai nodi dati dai programmi applicativi client.
-
inoltra i dati ad altri nodi di dati in base a un modello di "pipelining".
-
Il posizionamento dei blocchi sui nodi dati è fondamentale per la replica dei dati e il supporto per il pipelining dei dati. HDFS mantiene una replica di ogni blocco localmente. HDFS è serio per la replica e la resilienza dei dati.