Unter der Bezeichnung „Hadoop Common“ sind zahlreiche zentrale Funktionen und Bibliotheken zusammengefasst, auf die andere Anwendungen bei ihren Hadoop-Abfragen zugreifen können.
Das Dateisystem von Hadoop
Das Dateisystem Hadoop Distributed File System (HDFS) bildet die zentrale Organisationsstruktur von Hadoop. Der Name beschreibt zugleich die Fähigkeit von HDFS, seine Dateien (Files) möglichst gleichmäßig auf viele Computer eines Rechnerverbundes zu verteilen (to distribute).
Unter HDFS werden die einzelnen Computer eines Speichersystems auch als Nodes (auf Deutsch: Knoten) bezeichnet. Das Dateisystem fasst mehrere dieser Knoten zu sogenannten Clustern zusammen.
In jedem Cluster gibt es einen zentralen Computer, den Name Node. Dieser erstellt die Verzeichnisse (Directories) aller im Cluster gespeicherten Dateien. Außerdem verwaltet er die Zugriffsrechte in Mehr-Benutzer-Systemen. Weil der Name Node der bestimmende Hauptknoten des jeweiligen Clusters ist, wird er manchmal auch als Master Node bezeichnet. Dem Name Node sind wiederum die sogenannten Data Nodes untergeordnet.
Der Name Node orchestriert unter HDFS alle Speicher-, Lese- und Kopierzugriffe. Er gibt vor, wie eingehende Dateien in kleine Blöcke aufgeteilt und dann auf die einzelnen Data Nodes verteilt werden. Umgekehrt regelt der Name Node auch, wie Datenbestände bei Lesezugriffen wieder zusammengefügt werden.
Die Daten selbst laufen dabei zu keinem Zeitpunkt durch den Speicher des Name Node. Stattdessen empfangen und versenden die Data Nodes die Daten nach seinen Vorgaben.
Weil HDFS die zeitaufwendigen und ressourcenhungrigen Datenverkehre auf die Ebene der Data Nodes auslagert, können entsprechende Anforderungen sehr schnell und zudem parallel auf vielen Knoten gleichzeitig verarbeitet werden. Außerdem wird der Name Node selbst bei großen Datenmengen nicht zum Flaschenhals im Datenstrom. HDFS erreicht dadurch hohe Datenraten sowohl beim Hoch- als auch beim Herunterladen großer Datenmengen.
Mehr Sicherheit durch Datenkopien
Eine besondere Stärke von HDFS ist, dass es automatisiert Sicherheitskopien aller eingehenden Daten erstellt. Die Data Nodes kopieren alle eingehenden Datenblöcke und reichen diese Kopien selbständig an andere Data Nodes weiter. Somit kann der Ausfall eines einzelnen Knotens niemals zu einem Datenverlust führen, weil jedes Datenbit noch auf mindestens einem weiteren Knoten gespeichert ist.
Ähnliche Sicherungssysteme gibt es auch bei anderen Speichertechnologien, etwa bei sogenannten RAID-Systemen (Ausnahme: RAID 0), die intern mit einem Cluster aus mehreren Festplatten arbeiten. Alle eingehenden Daten werden dort auf zwei komplett identischen Festplatten gespeichert. Bei einem Ausfall oder beim Entfernen einer einzelnen Festplatte springt deren „Spiegelfestplatte“ im laufenden Betrieb als Ersatz ein.
Im Unterschied hierzu arbeitet HDFS jedoch nicht mit einer simplen 1:1-Spiegelung seiner Datenträger: Jede eingehende Datei wird in einer anderen Reihenfolge auf die Data Nodes des jeweiligen Clusters verteilt. So gewährleistet HDFS, dass kein Data Node überdurchschnittlich stark belastet wird. Denn bei einer festen, immer gleichen Reihenfolge würden die ersten Data Nodes in der Reihe viel stärker belastet als die hinteren Data Nodes. Kurze Datensätze würden beispielsweise nur auf den ersten Data Nodes der Reihe gespeichert werden, während die hinteren Data Nodes nur für sehr lange Datensätze überhaupt herangezogen würden. Damit ginge der Vorteil des lastverteilten Parallelbetriebs verloren, bei dem möglichst alle Data Nodes immer gleichmäßig ausgelastet werden und zeitgleich Daten speichern oder ausgeben.
Damit der Ausfall eines Name Node nicht zum Ausfall des kompletten Clusters führt, unterstützt HDFS sogenannte Hot Standby Nodes (kurz: HDN, auf Deutsch: aktive Bereitschaftsknoten). Ein solcher HDN ist eine exakte Kopie des eigentlichen Name Node. Er übernimmt unterbrechungsfrei dessen Aufgaben, falls der ursprüngliche Name Node einmal ausfallen sollte.
Intelligente Datenbündelung innerhalb von Serverracks
HDFS erkennt außerdem, wenn mehrere Knoten in einem Rechenzentrum beispielsweise als Blade Server im selben Serverschrank (Rack) verbaut sind – und dadurch ihre Daten besonders schnell untereinander austauschen können. HDFS bemüht sich dann, Dateien und deren Kopien jeweils in den Knoten desselben Racks zu bündeln. Diese Fähigkeit wird auch als Rack Awareness bezeichnet. Umgekehrt speichert HDFS bei Mehrfach-Back-ups mindestens eine Kopie jeder Datei auf einem komplett anderen Rack, sofern das Cluster entsprechend konfiguriert ist. Dann kann selbst der Ausfall eines ganzen Serverracks nicht zu Datenverlust führen.
Hadoop erkennt den Ausfall einzelner Komponenten sehr schnell und ersetzt diese im laufenden Betrieb durch entsprechende Spiegel-Komponenten. Deshalb zählt Hadoop mit HDFS zu den sogenannten hochverfügbaren Systemen mit sehr geringen Ausfallzeiten im Jahresmittel.