Das Hadoop Distributed Filesystem, kurz HDFS, bildet die Basis des Hadoop Ökosystems. Warum spricht man von einem Ökosystem? Wozu dient das Hadoop Ökosystem und welche Kategorien umfasst es. Diese Fragen werden im Folgenden beleuchtet. 

Das HDFS ist nicht mehr, als dass der Name sagt, nämlich ein Filesystem. Es gibt viele Filesysteme. Windows 10 beispielsweise funktioniert auf NTFS, dem New Technology File System. Wie der Name sagt, hat es eine lange Reihe von Vorgängern, beispielsweise FAT16, FAT32 und es sind auch schon Nachfolger in Sicht, ReFS, Resilient Filesystem. Ähnliches findet man in der Mac-Welt, seit dem Betriebssystem iOS 10.3 wird das Filesystem APFS, Apple File System eingesetzt. Auch dieses blickt auf eine Reihe von Vorgängern zurück. Auch in der Linux-Welt gibt es eine stolze Reihe von verschiedenen Filesystemen, aktuell ist momentan beispielsweise ext4, Fourth Extended File System.

Ein Filesystem sorgt dafür, dass die Daten und Files auf den Medien, beispielsweise Festplatten, geordnet abgelegt werden. Dies geschieht in einer Hierarchie von Verzeichnissen, die Files enthalten können. Diese Struktur wird dem Enduser gezeigt und unterstützt ihn dabei, die gewünschten Files zuzugreifen.

Dies erfolgt mit Hilfe des jeweiligen Betriebssystem und der Treibersoftware, die den Zugriff auf die gewünschten Medien ermöglicht.

Eine weitere in unserem Zusammenhang wichtige Eigenschaft ist die Blockgröße die das Filesystem unterstützt. Klassischerweise sind das 4 KB. Es werden also 4096 Zeichen auf ein Mal gelesen und geschrieben.

Das ist bei HDFS nicht anders, nur dass hier standardmäßig 128 MB Blöcke verarbeitet werden. Schon dieses Detail zeigt, dass es sich bei HDFS um ein Filesystem für Files ganz anderer Dimension handelt, als dass wir dies auf unseren Laptops oder firmeninternen Fileablagen gewohnt sind. Immerhin bedeutet diese Zahl auch, dass Files verarbeitet werden, die so groß sind, dass sie in “handliche” 128MB Blöcke unterteilt werden. HDFS ist also ein Big-Data-Filesystem. Als solches wird es nicht einfach auf einem Laptop oder auf einem Fileserver installiert, sondern es wird über einen Cluster installiert, also auf einem ganzen Netzwerk von Computern. Gehört ein Computer zu einem Cluster, dann wird er als Node dieses Clusters bezeichnet. Die Architektur von HDFS ist fehlertolerant. Fällt einer dieser Nodes aus, dann funktioniert das Filesystem dennoch weiter.

Speziell an HDFS ist auch, dass jeder Node ein kostengünstiger Server ist, mit einer Festplatte, auf welchen die Blöcke der Big-Data-Files abgelegt werden und auch über CPU und RAM verfügt. Diese Eigenschaft wird zur Berechnung von Datenanalysen verwendet. Klassische Berechnung von Analysen funktioniert so, dass die Daten blockweise vom Filesystem ins Memory geholt und dort ausgewertet werden. Auf HDFS funktioniert das anders: hier werden die Programme zu den Daten auf die einzelnen Nodes geschickt. Parallel auf allen Nodes, die Daten unseres Big-Data-Files enthalten, werden jetzt Teilergebnisse berechnet und anschließend zum Endergebnis zusammengestellt. Dabei kommt das Programmierparadigma MapReduce zum Zug.

Eine weitere wichtige Eigenschaft von HDFS ist, dass die Files einmal geschrieben und häufig gelesen werden.

Will man jetzt Anwendungen haben, die auf HDFS und MapReduce basieren, dann kann man nicht einfach die Anwendungen aus der klassischen Welt verwenden. Zu groß sind die Unterschiede im unterliegenden Filesystem. Ähnlich, wie ein Linux-Programm nicht einfach so auf Windows ausgeführt werden kann.

MapReduce-Programmierung ist anspruchsvoll und aufwändig. Ähnlich wie bei der Assembler-Programmierung muss die Logik der Auswertung sehr fein granuliert aufgebaut werden. Implementierung und Test nehmen viel Zeit in Anspruch.

Aus diesem Grund sind in den vergangenen Jahren eine Vielzahl von Werkzeugen entstanden, die auf HDFS basieren und die für den Endanwender relativ einfach zu handhaben sind. Wir befinden uns gerade am Anfang der Marktfähigkeit dieser Tools und wir können mit vielen weiteren Verbesserungen rechnen.

Macht man sich die Mühe, verstehen zu wollen, wie viele das sind, dann findet man allein bei Apache.org  mehr als hundert Top-Level-Projekte. Es gibt viele Schaubilder des Hadoop Ökosystems, also der Tools, die auf Hadoop basieren, aber es ist unmöglich geworden, alle auf einem Bild unterzubringen.

Die Tools können mittlerweile in Kategorien zusammengefasst werden und das Ökosystem kann basierend auf diesen Kategorien gezeichnet werden.

Hadoop Ökosystem in Kategorien

Das HDFS ist Basis des Ökosystems. Ersetzt man dieses durch ein anderes Big-Data-Filesystem, beispielsweise Amazons S3, dann können die Kategorien noch immer verwendet werden, die Namen der Tools werden jedoch variieren. Bleiben wir also bei HDFS.

YARN steht für Yet another Resource Negotiator – Wie der Name sagt, ist YARN dafür zuständig, die Ressourcen im Cluster für die Berechnungen mit MapReduce zu koordinieren. MapReduce ist ein Programmierparadigma und in der Hadoop-Welt eine Sammlung von Java-Libraries um damit Anwendungsprogramme zu entwickeln.

Solche Anwendungsprogramme dienen üblicherweise zur Datenanalyse. HIVE ist ein Hadoop-Data Warehouse, das schon seit mehreren Jahren existiert und immer weiter entwickelt wird. Mittlerweile gibt es jüngere, in der Handhabung leichtgewichtigere Data Warehouses, die selbst auf HIVE basieren, Impala ist ein Beispiel. Analysen in Data Warehouses haben üblicherweise relativ lange Antwortzeiten. Das ist auch bei HDFS nicht anders.

Will man kurze Antwortzeiten, beispielsweise im Online Transaction Processing zu implementieren, oder will man auch einzelne Datenfelder verändern können, dann wird man spezielle, auf HDFS basierte Datenbanksysteme einsetzen wollen. HBase ist ein solches System. Es ist nicht relational, was den Umgang damit etwas gewöhnungsbedürftig macht. Aber es ist ausgelegt auf Datenmengen, die mit relationalen Datenbanken nicht mehr gehandhabt werden können.

Um Tools wie HBase zu bauen, das Antwortzeiten im ms-Bereich liefert und dennoch auf dem relative langsamen HDFS zu implementieren, das zusätzlich noch die Eigenschaft hat, dass die Files nicht verändert werden können, waren einige Kunstgriffe nötig. Diese sind im Diagramm unter “File Formate, Datenstrukturen und Algorithmen” zusammengefasst. Parquet und Avro gehören zu den File Formaten. Bloom Filter sind ein Beispiel von Datenstrukturen und Algorithmen, die in unter anderem in HBase verwendet werden.

Die Grafik zeigt weitere Komponenten: Die Nodes in einem Cluster koordinieren sich mit Hilfe von Zookeeper.

Unter Ingestion und Streaming fallen Tools, wie Kafka, Spark, Flink, Storm, Flume und andere. Diese sind für die schnelle Verarbeitung von Datenströmen gedacht. Ihren Platz im Hadoop Ökosystem verdienen Sie dadurch, dass damit die realtime eintreffenden Daten in Hdfs gespeichert und weiter analysiert werden können. Und letztendlich bieten gerade Tools wie Spark, Flink aus der Kategorie “Analytics auf HDFS-Files” die Möglichkeit, die Hdfs-Daten mit Machine Learning auszuwerten.

Mit geeigneten Architekturen baut man ein Big-Data-System, das Daten realtime verarbeitet. Um dies zu realisieren, sind viele verschiedene Komponenten des Hadoop Ökosystems zu orchestrieren. Dies wird durch Tools aus der Kategorie “Workflow und Scheduler” unterstützt. NiFi ist ein Beispiel aus dieser Kategorie.

Und letztendlich möchten wir Tools haben, um den Cluster zu installieren und zu Überwachen. Ambari ist ein Beispiel aus dieser Kategorie.

Die genannten Tools sind alle Top-Level-Projekte bei der Apache Foundation. Sie können dort heruntergeladen und installiert werden.

Die Toolunterstützung für Hadoop wird rasant besser und ist natürlich auch ein Markt für viele neue Player. Diese tragen zur Weiterentwicklung der Open Source Projekte bei und bieten auch kostenpflichtige Varianten ihrer Tools mit weiteren Features an.