Un cluster HDFS ha due tipi di nodi che operano in uno schema master-slave:
1. NameNode (il master) e
2. Numero di DataNode (slave/lavoratori).
HDFS NameNode
1. NameNode è il principale componente centrale del framework dell’architettura HDFS.
2. NameNode è anche conosciuto come nodo master.
3. HDFS Namenode memorizza i meta-dati cioè il numero di blocchi di dati, il nome del file, il percorso, gli ID dei blocchi, la posizione del blocco, il numero di repliche e anche la configurazione relativa agli slave. Questi meta-dati sono disponibili in memoria nel master per un recupero più veloce dei dati.
4. NameNode mantiene i metadati relativi allo spazio dei nomi del file system in memoria, per un tempo di risposta più veloce. Quindi, è necessaria più memoria. Quindi la configurazione NameNode dovrebbe essere distribuita su una configurazione affidabile.
5. NameNode mantiene e gestisce i nodi slave, e assegna loro i compiti.
6. NameNode ha conoscenza di tutti i DataNode che contengono blocchi di dati per un dato file.
7. NameNode si coordina con centinaia o migliaia di nodi di dati e serve le richieste provenienti dalle applicazioni client.
Due file ‘FSImage’ e ‘EditLog’ sono usati per memorizzare le informazioni sui metadati.
FsImage: È l’istantanea del file system quando Name Node viene avviato. È un “file immagine”. FsImage contiene l’intero spazio dei nomi del filesystem e memorizzato come un file nel file system locale del NameNode. Contiene anche una forma serializzata di tutte le directory e gli inode dei file nel filesystem. Ogni inode è una rappresentazione interna dei metadati del file o della directory.
EditLogs: Contiene tutte le modifiche recenti apportate al filesystem sulla più recente FsImage. NameNode riceve una richiesta di creazione/aggiornamento/cancellazione dal client. Dopo di che questa richiesta viene prima registrata nel file delle modifiche.
Funzioni di NameNode in HDFS
1. È il demone master che mantiene e gestisce i DataNodes (nodi slave).
2. Registra i metadati di tutti i file memorizzati nel cluster, ad esempio la posizione dei blocchi memorizzati, la dimensione dei file, i permessi, la gerarchia, ecc.
3. Registra ogni cambiamento che avviene ai metadati del file system. Per esempio, se un file viene cancellato in HDFS, il NameNode lo registrerà immediatamente nell’EditLog.
4. Riceve regolarmente un Heartbeat e un rapporto sui blocchi da tutti i DataNode nel cluster per garantire che i DataNode siano attivi.
5. Tiene un registro di tutti i blocchi in HDFS e in quali nodi si trovano questi blocchi.
6. Il NameNode è anche responsabile di prendersi cura del fattore di replica di tutti i blocchi.
7. In caso di fallimento del DataNode, il NameNode sceglie nuovi DataNodes per nuove repliche, bilancia l’uso del disco e gestisce il traffico di comunicazione verso i DataNodes.
HDFS DataNode
1. DataNode è anche conosciuto come nodo Slave.
2. Nell’architettura Hadoop HDFS, DataNode memorizza i dati effettivi in HDFS.
3. DataNode è responsabile del servizio, delle richieste di lettura e scrittura per i client.
4. DataNodes può essere distribuito su hardware commodity.
5. I DataNode inviano informazioni al NameNode sui file e i blocchi memorizzati in quel nodo e rispondono al NameNode per tutte le operazioni del filesystem.
6. Quando un DataNode si avvia si annuncia al NameNode insieme alla lista dei blocchi di cui è responsabile.
7. Il DataNode è solitamente configurato con molto spazio su disco rigido. Poiché i dati effettivi sono memorizzati nel DataNode.
Funzioni del DataNode in HDFS
1. Si tratta di demoni o processi slave che girano su ogni macchina slave.
2. I dati effettivi sono memorizzati nei DataNode.
3. I DataNode eseguono le richieste di lettura e scrittura di basso livello dai client del file system.
4. Ogni DataNode invia un messaggio heartbeat al Name Node ogni 3 secondi e comunica che è vivo. Nello scenario in cui il Name Node non riceve un heartbeat da un Data Node per 10 minuti, il Name Node considera quel particolare Data Node come morto e inizia il processo di replica a blocchi su qualche altro Data Node.
5. Tutti i Data Node sono sincronizzati nel cluster Hadoop in modo che possano comunicare tra loro e assicurarsi di
i. Bilanciare i dati nel sistema
ii. Spostare i dati per mantenere alta la replica
iii. Copiare i dati quando necessario
.