Wie funktioniert Hadoop?
Folgende zwei technischen Grundprinzipien bestimmen die grundlegende Funktionsweise von Hadoop:
-
HDFS verteilt als Cluster-Datei-System die Daten auf verschiedene Systeme in einem Rechnerverbund.
-
Mit MapReduce werden die Daten an ihrem Ablageort verarbeitet (Prinzip: Data Locality). Das beschleunigt die Rechenarbeit und verringert den Netzdurchsatz. Dafür teilt der Algorithmus die Datenverarbeitung in kleine Portionen auf und wickelt diese parallel ab.
Ein Hadoop-Cluster funktioniert nach dem Master-Slave-Prinzip. Die Rolle des Masters übernimmt der "NameNode". Dieser Knoten verwaltet sämtliche Metadaten zu File- System, Verzeichnisstrukturen und Dateien. Die Daten werden auf den "DataNodes" abgelegt, die die Rolle der Slaves übernehmen. Um Datenverlusten vorzubeugen, setzt Hadoop auf Replikation der Dateien. Das System zerlegt dabei die Dateien in einzelne Datenblöcke in einer bestimmten Größe. Der NameNode (Master) sorgt dafür, dass diese Blöcke verteilt werden und dass jeder Block mehrfach repliziert vorliegt. Fällt ein Knoten aus, ist die dort abgelegte Information nicht verloren. Der NameNode weiß, in welche Blöcke die einzelnen Dateien zerlegt sind und wo diese Blöcke noch abgelegt sind.
In der Standardkonfiguration legt HDFS jeden Datenblock drei Mal innerhalb des Clusters ab. Damit sich der Status des Gesamtsystems laufend überwachen lässt, schickt jeder DataNode in festgelegten Zeitabständen ein Lebenszeichen (Heartbeat) an den zentralen NameNode. Meldet sich ein Slave über längere Zeit nicht, wird er für "tot" erklärt, und der Master sorgt mit Hilfe der auf den anderen Knoten abgelegten Datenblockkopien dafür, dass wieder eine ausreichend sichere Zahl an Kopien der betroffenen Datenblöcke vorliegt. Um dem Ausfall des NameNode, der prinzipiell einen Single Point of Failure darstellt, vorzubeugen, wird diesem ein "SecondaryNameNode" zur Seite gestellt. Letzterer zeichnet alle Veränderungen der Metadaten auf. Mit Hilfe dieses LogFiles lässt sich ein NameNode jederzeit wiederherstellen.
Die Datenverarbeitung funktioniert auf Basis der MapReduce-Engine in Hadoop. Google hat diesen Algorithmus speziell für eine hoch parallelisierte Datenverarbeitung in einem Cluster ausgelegt. Dabei wird die zu verarbeitende Datei auf mehrere Map-Prozesse verteilt. In der Map-Phase berechnen Map-Prozesse parallel die Zwischenergebnisse. Danach folgt die Reduce-Phase, während der Reduce-Prozesse diese Zwischenergebnisse einsammeln und daraus eine Ergebnisdatei ermitteln.
In Hadoop haben die Entwickler dieses Modell übernommen. Wie die Datenhaltung arbeitet auch die Datenverarbeitung nach einem Master-Slave-Prinzip. Rechenaufgaben werden in Hadoop als Job bezeichnet. Ein "JobTracker" fungiert dabei als Master. Dieser verteilt und verwaltet die Jobs im Cluster. Die eigentliche Jobabwicklung übernehmen die "TaskTracker" auf den Slave-Systemen. Auf jedem Cluster-Knoten ist eine solche TaskTracker-Instanz installiert. In der Regel arbeiten auf einem Hadoop-Knoten paarweise immer ein DataNode sowie ein TaskTracker.