Das Software-Framework im Überblick

Big Data: Mit Hadoop große Datenmengen im Griff

Funktionsweise von Hadoop

Die beiden folgenden 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-Systemen, Verzeichnisstrukturen und Dateien. Die Daten werden auf den "DataNodes" abgelegt, die die Rolle der Slaves übernehmen. Um Datenverlusten vorzubeugen, setzt Hadoop auf die 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 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 mithilfe 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 vorzubeugen, der prinzipiell einen Single Point of Failure darstellt, wird diesem ein "SecondaryNameNode" zur Seite gestellt. Letzterer zeichnet alle Veränderungen der Metadaten auf. Mithilfe 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 derer 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.