- Un cluster HDFS include un NameNode, che è il server director. Il NameNode tiene traccia dello stato di tutti i file, delle autorizzazioni dei file e della posizione di ogni blocco. Il software NameNode gestisce il namespace del file system che a sua volta traccia e controlla l'accesso dei client ai file ed esegue operazioni come aprire, chiudere e rinominare directory e file.
Il namespace del file system divide anche i file in blocchi e associa i blocchi ai DataNodes, che è la parte worker del sistema. Configurando un solo NameNode per cluster, l'architettura del sistema semplifica la gestione dei dati e la memorizzazione dei dati HDFS. Inoltre, viene garantita una maggiore sicurezza, impedendo ai dati dell'utente di passare attraverso il NameNode.
- Nella maggior parte dei casi è presente un DataNode per ogni nodo in un cluster che gestisce lo storage dei dati all'interno del nodo. Il software DataNode gestisce la creazione, l'eliminazione e la replica dei blocchi, oltre alle richieste di lettura e scrittura. Ogni DataNode memorizza separatamente i dati HDFS nel proprio file system locale con ogni blocco come file separato. I DataNode sono i nodi worker (o daemon Hadoop, che eseguono processi in background) e possono essere eseguiti su hardware commerciali se un'organizzazione punta a risparmiare.
Sia NameNode che DataNode sono software scritti per funzionare su un'ampia varietà di sistemi operativi (OS), che spesso è il sistema operativo GNU/Linux. Nella creazione di HDFS è stato utilizzato il linguaggio Java, il che significa che qualsiasi macchina che supporta Java può utilizzare anche il software NameNode o DataNode.
Le distribuzioni avranno spesso una singola macchina dedicata che esegue il software NameNode. Quindi, qualsiasi altra macchina nel cluster esegue una singola istanza del software DataNode. Se necessario, ma utilizzato solo di rado, è possibile configurare più di un DataNode su una singola macchina.
Quando i dati vengono importati in HDFS, vengono suddivisi in blocchi e distribuiti a diversi nodi in un cluster. Con i dati memorizzati in più DataNode, i blocchi possono essere replicati su altri nodi per consentire l'elaborazione parallela. Il Distributed File System (DFS) include comandi per accedere, recuperare, spostare e visualizzare rapidamente i dati. Grazie alle repliche dei blocchi di dati su più DataNode, è possibile rimuovere una copia senza rischiare di danneggiare i file delle altre copie. La dimensione predefinita di un blocco HDFS è 128 MB (Hadoop 2.x), che può sembrare eccessiva, ma consente di ridurre al minimo i tempi di ricerca e ridurre i metadati necessari.
Per ridurre al minimo i rischi e velocizzare l'elaborazione, quando un DataNode smette di segnalare il NameNode, quel DataNode viene rimosso dal cluster e le operazioni continuano senza di esso. Se quel DataNode diventa successivamente operativo, viene assegnato a un nuovo cluster.
HDFS fornisce file flessibili di accesso ai dati tramite varie interfacce: un'API Java nativa è fornita con HDFS, mentre un wrapper in linguaggio C è disponibile per l'API Java, inoltre è possibile utilizzare un browser HTTP per cercare tra i file di un'istanza HDFS.