- Ein HDFS-Cluster umfasst einen NameNode, der als Director-Server fungiert. Der NameNode verfolgt den Status aller Dateien, die Dateiberechtigungen und den Speicherort jedes Blocks. Die NameNode-Software verwaltet den Dateisystem-Namespace, der wiederum den Client-Zugriff auf die Dateien verfolgt und steuert und Vorgänge wie das Öffnen, Schließen und Umbenennen von Verzeichnissen und Dateien ausführt.
Der Dateisystem-Namensraum unterteilt Dateien auch in Blöcke und ordnet die Blöcke den DataNodes zu, die den Worker-Teil des Systems bilden. Durch die Konfiguration mit nur einem einzigen NameNode pro Cluster vereinfacht die Systemarchitektur die Datenverwaltung und die Speicherung der HDFS-Metadaten. Darüber hinaus wird eine größere Sicherheit erhöht, indem verhindert wird, dass Benutzerdaten durch den NameNode fließen.
- In einem Cluster gibt es meistens einen DataNode pro Knoten, der den Datenspeicher innerhalb des Knotens verwaltet. Die DataNode-Software verwaltet die Erstellung, Löschung und Replikation von Blöcken sowie Lese- und Schreibanfragen. Jeder DataNode speichert HDFS-Daten separat in seinem lokalen Dateisystem, wobei jeder Block als separate Datei gespeichert wird. DataNodes sind die Worker-Knoten (oder Hadoop-Daemons, die Prozesse im Hintergrund ausführen) und können auf handelsüblicher Hardware ausgeführt werden, wenn ein Unternehmen Kosten sparen möchte.
Sowohl NameNode als auch DataNode sind Software, die für den Einsatz auf einer Vielzahl von Betriebssystemen (OS) geschrieben wurde, wobei es sich häufig um das Betriebssystem GNU/Linux handelt. HDFS wurde in der Programmiersprache Java entwickelt, d. h. jede Maschine, die Java unterstützt, kann auch die NameNode- oder DataNode-Software verwenden.
Bei der Bereitstellung wird oft eine einzelne dedizierte Maschine verwendet, auf der die NameNode-Software ausgeführt wird. Auf allen anderen Maschinen im Cluster wird dann eine einzelne Instanz der DataNode-Software ausgeführt. Bei Bedarf, aber nur selten, ist eine Konfiguration von mehr als einem DataNode auf einem einzelnen Computer möglich.
Wenn Daten in HDFS übertragen werden, werden sie in Blöcke unterteilt und an verschiedene Knoten in einem Cluster verteilt. Da die Daten in mehreren DataNodes gespeichert sind, können die Blöcke auf andere Knoten repliziert werden, um eine parallele Verarbeitung zu ermöglichen. Das verteilte Dateisystem (DFS) enthält Befehle für den schnellen Zugriff auf Daten sowie für das Abrufen, Verschieben und Anzeigen von Daten. Bei Replikaten von Datenblöcken über mehrere DataNodes hinweg kann eine Kopie entfernt werden, ohne dass die Gefahr besteht, dass die anderen Kopien beschädigt werden. Die Standard-HDFS-Blockgröße beträgt 128 MB (Hadoop 2.x), was für manche groß erscheinen mag. Die Blockgröße dient allerdings dazu, die Suchzeiten zu minimieren und die erforderlichen Metadaten zu reduzieren.
Um das Risiko zu minimieren und die Verarbeitung zu beschleunigen, wird ein DataNode aus dem Cluster entfernt und der Betrieb ohne diesen DataNode fortgesetzt, wenn ein DataNode keine Signale mehr an den NameNode sendet. Wenn dieser DataNode später in Betrieb genommen wird, wird er einem neuen Cluster zugewiesen.
HDFS bietet flexible Datenzugriffsdateien über verschiedene Schnittstellen: HDFS wird mit einer nativen Java-API geliefert, während für die Java-API ein Wrapper in der Programmiersprache C verfügbar ist. Außerdem kann ein HTTP-Browser zum Durchsuchen der Dateien einer HDFS-Instanz verwendet werden.