Hadoop einfach erklärt!

Apache Hadoop ist eine verteilte Big Data Plattform, die von Google basierend auf dem Map-Reduce Algorithmus entwickelt wurde, um rechenintensive Prozesse bis zu mehreren Petabytes zu erledigen.

Hadoop ist eines der ersten Open Source Big Data Systeme, die entwickelt wurden und gilt als Initiator der Big Data Ära. Das verteilte Big Data Framework ist in der Lage sehr große Datenmengen zu speichern und mit hoher Geschwindigkeit zu verarbeiten. Ursprünglich von Google Inc. designed, wurde Apache Hadoop bereits 2008 als Top Level Open Source Projekt der Apache Foundation eingestuft.

Mittlerweile ist Hadoop das bekannteste Big Data Ökosystem und jeder sollte die wichtigsten Eigenschaften kennen:

  1. Was ist Apache Hadoop?
  2. Was ist ein Hadoop Cluster?
  3. Was ist MapReduce? MapReduce Algorithmus
  4. Was ist der Unterschied zwischen Hadoop und einer relationalen Datenbank?
  5. Was ist der Unterschied zwischen Hadoop MapReduce und Apache Spark?
  6. Vor- und Nachteile von Hadoop
  7. Zusammenfassung

Was ist Apache Hadoop?

Durch die verteilte Architektur von Apache Hadoop, ist es in der Lage durch Parallelisierung extrem große Datenmengen sehr performant in einem Cluster zu verarbeiten. Um genauer zu verstehen, was Hadoop Cluster eigentlich ist und wie es sich zusammensetzt, gehe ich im Folgenden auf die Komponenten, das HDFS Dateisystem und Erweiterungen ein.

Hadoop Komponenten

Hadoop besteht auf verschiedenen Komponenten: HDFS, YARN, MapReduce und einigen Erweiterungen, die man auch dazuzählen sollte. Die folgende Grafik gibt einen grundsätzlichen Überblick des Systems.

Apache Hadoop Komponenten
Hadoop Komponenten

Nun zu den einzelnen Komponenten von Hadoop…

HDFS – Hadoop Distributed File System

Das Herzstück von Hadoop ist das verteilte Dateisystem Hadoop Distributed File System (HDFS). HDFS ist ein hochverfügbares, verteiltes Dateisystem zur Speicherung von sehr großen Datenmengen, welches in Clustern von Servern organisiert ist. Dabei werden die Daten auf mehreren Rechnern (Nodes) innerhalb eines Clusters abgespeichert, das passiert in dem die Dateien in Datenblöcken mit fester Länge zerlegt und redundant auf den Knoten verteilt.

HDFS ist das Dateisystem von Apache Hadoop und das zentrale Element von Hadoop.
HDFS ist das Dateisystem von Apache Hadoop und das zentrale Element von Hadoop.

Anders als in einer klassischen Datenbank legt Hadoop einzelne Files in dem Dateisystem ab, die nach bestimmten Kriterien partitioniert sind und auf dem Dateisystem einzusehen sind.

HDFS Aufbau eines HDFS Filesystems mit Name Node Data Nodes
HDFS Aufbau File System Name Node & Data Nodes

Ein Hadoop System arbeitet in einem Cluster aus Servern, welche aus Master- und Slavenodes bestehen. Der Masternode, der auch NameNode genannt wird, ist für die Verarbeitung aller eingehenden Anfragen zuständig und organisiert die Speicherung von Dateien sowie den dazugehörigen Metdadaten in den einzelnen Datanodes (oder Slave Nodes). HDFS ist auf große Datenmengen ausgelegt und kann Dateisysteme bis zu mehreren Millionen Dateien erstellen.

Die Dateiblocklänge als auch Replikationsgrad sind frei konfigurierbar, was aus meiner Erfahrung einen großen Einfluss auf die Performance von Hadoop hat. Hier gibt es mehr Informationen über Replikation und Dateiblockgröße in Bezug auf Performance.

HDFS Stärken und Schwächen

Folgend gehe ich auf die Stärken und Schwäche von dem HDFS als Filesystem ein.

  • Stärken
    • Sehr große Dateien: Hunderte TB
    • Skaliert auf tausende Standard-Server
    • Automatische Verteilung und Replikation
    • Ausfallsicher: Fehler sind Regel
  • Schwächen
    • Physische Lokationen von Blöcken intransparent
    • eingeschränktes Optimierungspotenzial für höhere Dienste (wie Hive etc.)

In der Praxis sehe ich immer weniger HDFS Dateisysteme, da die Cloudinfrastruktur auch in Deutschland so langsam Fahrt aufnimmt. So werden viele Big Data Projekte schon in der Cloud auf intelligenten Speicher Systemen wie AWS S3 oder Azure BlobStore gestartet, da diese oft Kosteneffizienter und viel einfacher zu bedienen sind.

YARN – Yet Another Resource Negotiator

YARN ist der Ressource Manager von Hadoop und ist dafür zuständig die angefragten Ressourcen (CPU, Speicher) eines Hadoop Clusters der verschiedenen Jobs zu verteilen. So können bestimmten Jobs mehr oder weniger Ressourcen zugeordnet werden, was pro Anwendung und Nutzer konfiguriert werden kann.

MapReduce Algorithmus

Hadoop basiert auf dem MapReduce Algorithmus, welcher konfigurierbare Klassen für Map, Reduce und Kombinationsphasen bereitstellt. MapReduce ist leider schon etwas in die Jahre gekommen und gilt in der Szene als veraltet, daher wird es zunehmend durch Directred-Acyclic-Graph (DAG) basierte Engines ersetzt. Apache Spark z.B. basiert auch auf einem gerichteten azyklischen Graphen und kann ebenfalls für Abfragen eingesetzt werden.

Hadoop MapReduce als Datenverarbeitungsprozess
Hadoop MapReduce als Datenverarbeitungsprozess. Heute gilt die Technologie als veraltet.

Aus meiner Erfahrung empfehle ich MapReduce nicht mehr einzusetzen und lieber auf neue Ausführungsverfahren (TEZ, Spark) wechseln, um so nicht auf Performance zu verzichten.

Directed-Acyclic-Graph (DAG)

Ein DAG kommt aus der Graphentheorie und ermöglich die performante Ausführung von komplexen verteilten Algorithmen. Verschiedene Ausführungsverfahren wie Apache Spark oder Apache TEZ machen performante Datenverarbeitung im Hadoop Umfeld möglich.

Dateiformate und Kompression

Hadoop unterstützt verschiedene Dateiformate und ist in der Lage strukturierte, sowie unstrukturierte Formate zu lesen. Einfache Formate wie  CSV, JSON oder hochoptimierte strukturierte Formate wie ORC und Parquet sind somit kompatibel. Das schemabasierte Formate Apache Avro ist ebenfalls eine gute Option, um Daten zu strukturieren und nutzbar zu machen.

Hadoop Erweiterungen

Auf Basis von Hadoop wurden viele Erweiterungen entwickelt, die bestimmte Funktionalitäten zu Hadoop hinzufügen oder es ermöglichen einfacher auf das Dateisystem HDFS zuzugreifen. Hier gebe ich nur einen kleinen Überblick über die wichtigsten Erweiterungen.

Apache Hive

Hive Logo

Hive erweitert Hadoop um eine Funktionalität eines DWHs und es werden Abfragen in einer SQL basierenden Sprache auf das Hadoop Filesystem möglich. Mit der HiveQL-Syntax, die nah an der SQL:1999 Standard ist, können Anwender und Programmierer Programme zur Datenverarbeitung (ETL) schreiben und verschieden Skripte ausführen. HiveQL übersetzt den geschriebenen SQL-Code in MapReduce-Jobs oder einen DAG.

Mit Apache Hive sind mittlerweile schon viele Unternehmen vertraut und es hat einen gewissen Standard erreicht. Da viele Entwickler mit SQL sehr vertraut sind, wird Hive gerne in Produktionsumgebungen genutzt wird.

In Hive werden natürlich viele gängige SQL Standard Operationen wie Joins, Date-Funktionen, Filter, Aggregationsfunktionen sowie Windows-Funktionen zur Verfügung gestellt. Anders als relationale Datenbanken, die Schema-on-Write (SoW) nutzen, arbeitet Hive den Schema-on-Read (SoR) Konzept, welches erst bei lesen der Daten nach einem gewissen Schema prüft. Dadurch können Datenstrukturen sehr agil sein und unstrukturierte Daten werden unterstützt.

HBase

hbase logo Big Data Plattform mit Hadoop

HBase ist eine spaltenorientierte Datenbankerweiterung für das verteilte Hadoop File System (HDFS). Anders als in relationalen Datenbanken kann man in HBase kein SQL-Code für Abfragen nutzen und stehen für die Entwicklung von Applikationen stehen Java, Apache Avro, REST oder Thrift zur Verfügung.

In einem HBase System werden Tabellen gehalten, mit Zeilen und Spalten, wie in einer relationalen Datenbank. Jede Tabelle muss einen definierten Primärschlüssel haben und wenn auf die Daten zugegriffen wird, muss dieser Schlüssel genutzt werden. Ein Vorteil von HBase ist die Möglichkeit „Sparse“ Tabellen anzulegen.

Apache Spark

Spark kann durch das DataSource API ebenfalls auf HDFS zugreifen und als performante Engine für die Datenverarbeitung genutzt werden. So können Sie bspw. mit Spark einen ETL mit Spark durchführen und das fertige Flatfile auf HDFS abspeichern.

Tez

Tez ist eine Open Source Framework, was als performante Ausführungsengine auf Hadoop genutzt werden kann. Genutzt wird dabei ein Directred-Acyclic-Graph (DAG), was als deutlich performantere Ausführungsengine als Hadoop MapReduce gilt. Hier ein Vergleich von der offinziellen Apache TEZ Seite:

Hive MapReduce Prozess ohne DAG
Hive mit MapReduce
Tez Query optimized by DAG
Hive on TEZ nach DAG optimiert

In den Grafiken ist deutlich zu erkennen, dass die Ausführung anhand eines DAGs deutlich optimiert wird. Diese Optimierung führt zu schnelleren Abfragen und allgemein mehr Performance auf Hadoop.

Was ist ein Hadoop Cluster?

Ein HadoopCluster ist ein Zusammenschluss von Servern zu einem Computer-Cluster, was die Speicherung und Analyse von enormen Datenmengen ermöglicht. Durch die verteilte Rechenleistung wird besonders rechenintensive Datenverarbeitung möglich.

Was ist MapReduce? MapReduce Algorithmus

MapReduce ist das Herzstück von Apache Hadoop. Das Programmierkonzept erlaubt die massive Skalierung von tausenden von Servern innerhalb eines Hadoop Clusters. Das Konzept ist eigentlich relativ einfach zu verstehen und wie der Name schon sagt, besteht es aus zwei einzelnen Tasks: Map & Reduce.

Hadoop MapReduce erklaerung
MapReduce fragt einzelne Daten von den Workern aus dem Hadoop Cluster ab und fasst die Ergebnisse zusammen.

Der erste Prozess ist der Map Job, dieser nimmt ein Set von Daten und konvertiert diese in ein anderes Set von Daten, in welchem die individuellen Elemente der Daten in Tupel (Key/Value Pairs) zusammengefasst werden.

Der Reduce Job nimmt den Output von dem Map Job und kombiniert die gebildeten Tupel in kleinere Menge von Tupel. Ein Reduce Job kommt immer nach dem Map Job. Folgende Grafik zeigt einen MapReduce Job am Beispiel eines Word Counts.

Hadoop MapReduce Word Count Beispiel
Hadoop MapReduce Beispiel – Word Count

Was ist der Unterschied zwischen Hadoop und einer relationalen Datenbank?

Der Unterschied zwischen einem Hadoop System und einer relationalen Datenbank ist signifikant. Folgend zeige ich euch die größten Unterschiede.

  1. Hadoop ist im engsten Sinne keine wirkliche Datenbank, sondern mit HDFS ein redundantes und parallelisiertes Dateisystem.
  2. Relationale Datenbanken basieren auf dem ACID Prinzip: Atomicity, Consistency, Isolation and Durability. Hadoop basiert verfolgt nicht dieses Prinzip d.h. wenn man beispielsweise einen Use Case eines Guthabenaccounts nachbauen möchte, muss man alle möglichen Szenarios nachbauen (Was passiert, wenn Guthaben gebucht wird und ein Fehler tritt auf?).
  3. Hadoop ermöglicht massive Skalierung der Rechenleistung und Speicherkapazitäten mit relativ kleinen Kosten im Vergleich zu einem RDBMS.
  4. Parallelisierung von Prozessen und somit die Verarbeitung von sehr großen Datenmengen ist in Hadoop möglich.
  5. Oft wird gesagt der Hauptunterschied zu RDBMS darin liegt, dass diese nicht in der Lage sind mit unstrukturierten Daten zu arbeiten. Aber eigentlich gibt es doch einige RDBMS, die mit unstrukturierten Daten arbeiten können. Natürlich ist die Performance, wenn die Datenmenge groß wird, irgendwann ein Problem.
  6. Hive SQL ist immer langsamer als ein SQL-Behelf auf einer realtionalen Datenbank. Jeder der glaubt, Hive sei bei der gleichen (kleineren) Datenmenge schneller, wird oft enttäuscht sein.
  7. Die Parallelisierung und Skalierung ist Hadoops Stärke, somit ist kaum eine Grenze in der Größe der Daten gesetzt.

Lasst uns die zwei Systeme Hadoop und RDBMS nochmal im direkten Vergleich angucken:

EigenschaftRDBMSHadoop
Datenvielfalt
Vornehmlich strukturierte DatenStrukturierte, Semi-Strukturierte and unstrukturierte daten
DatenspeicherDurchschnittlich eher GBSFür große Datenmengen im TB und PB-Bereich
AbfragenSQLHQL (Hive Query Language)
SchemaSchema on write (static schema)Schema on read (dynamic schema)
GeschwindigkeitLiest sehr schnellLesen und Schreiben schnell, aber bei geringeren Datenmengen ist die RDBMS schneller
Kostenmeistens LizenzKostenlos
Use CaseOLTP (Online transaction processing)Analytics (Audio, video, logs etc), Data Discovery
DatenobjekteRelationale TabellenKey/Value Pair
DurchsatzGeringHoch
SkalierbarkeitVertikial (Scale Up)Horizontal (Scale Out)
Hardware
High-End ServerCommodity/Utility Hardware
IntegritätHoch (ACID)Gering

Was ist der Unterschied zwischen Hadoop MapReduce und Apache Spark?

Oft wird mir die Frage gestellt: Wie unterscheidet sich Spark vs. Apache Hadoop?

In diesem Artikel gebe ich einen grundsätzlichen Überblick über Apache Spark und warum Spark viele Vorteile gegenüber Hadoop hat.

Beide basieren auf dem Konzept der Verteilung von Daten und Arbeitsschritten in einem Cluster, aber unterscheiden sich grundsätzlich in der Architektur und Möglichkeiten der Datenverarbeitung:

Spark vs. Hadoop wo ist der Unterschied?
Spark vs. Hadoop: Die Unterschiede

Der Vergleich zeigt, dass Spark in der Verarbeitung von Daten viele Vorteile hat, dennoch kommt HDFS für die langfristige Speicherung von großen Datenmengen öfter zu Einsatz. Durch den Vormarsch der Cloudtechnologie von Amazon und Microsoft wird das HDFS langsam abgelöst und durch intelligente Dienste wie Amazon S3 ersetzt.

Vor- und Nachteile von Hadoop

Folgend habe ich die Vor- und Nachteile von Hadoop zusammengefasst.

Vorteile von Hadoop

  • Verteilte Speicherung (HDFS)
  • Verteile Verarbeitung (MapReduce)
  • Fehlerrobustheit
  • Open Source
  • Großes Ökosystem

Nachteile von Hadoop

  • Hohe Latenz bei Abfragen
  • Komplexe API
  • Machine Learning kaum möglich
  • Kein Streaming

Zusammenfassung

Hadoop ist eines der weitverbreitetsten Big Data Plattformen und mit dem starken Dateisystem HDFS ein oft eingesetztes Dateisystem im Big Data Umfeld. Die vielen Erweiterungen von Hadoop, geben einem viele Möglichkeiten HDFS für verschiedenste Prozesse und Datenverarbeitungen einzusetzen.

Wenn Hadoop HDFS zum Einsatz kommt, sollten Sie sich gut überlegen welche Abfragealgorithmen Sie einsetzen sollten. Denn MapReduce ist in die Jahre gekommen und hat einige Nachteile in Bezug auf Performance. Hier gibt es zum Beispiel TEZ oder Spark, die Sie einsetzen können. Beide werden nach einem DAG optimiert und somit sind diese MapReduce überlegen.

Auch HDFS wir heute schon häufig durch andere Objekt Stores wie AWS S3 oder Microsoft Blob Storage ersetzt, diese haben den Vorteil, dass sie kaum Gewartet werden müssen.

Ihr Kontakt: Laurenz Wuttke

Unternehmen sitzen auf einem ungenutzten Berg von Kundendaten. Wir von datasolut entwickeln KI, die Ihr Marketing optimiert. Damit Sie dem richtigen Kunden zur richtigen Zeit das richtige Angebot machen können.

Laurenz Wuttke

Auch interessant für Sie

Laurenz Wuttke datasolut Gmbh
Ich freue mich, wenn Sie sich zu unserem Newsletter anmelden.

Jetzt zum Newsletter anmelden!

Den datasolut Blog abonnieren und Expertentipps zu Marketingoptimierung mit künstlicher Intelligenz erhalten.

  • Spannende Interviews
  • Interessante Case Studies
  • Bewährte Praxistipps

Mit der Anmeldung stimmen Sie unserer Datenschutzerklärung zu.