14 Hadoop

Hadoop ist ein Ökosystem aus Open-Source-Komponenten, das für die Speicherung und Verarbeitung großer Datenmengen in einem verteilten Computing-Umfeld entwickelt wurde.

14.1 Überblick und Einführung

14.1.1 Geschichte und Entstehung von Hadoop

Hadoop entstand aus einem Bedürfnis heraus, große Datenmengen effizient zu speichern und zu verarbeiten. Die Anfänge von Hadoop gehen auf das Jahr 2003 zurück, als Google ein Whitepaper mit dem Titel “The Google File System” (GFS) veröffentlichte. Dieses Dokument beschrieb ein verteiltes Dateisystem, das speziell dafür entwickelt wurde, sehr große Datenmengen über viele Maschinen hinweg zu speichern und zu verwalten. Kurz darauf, im Jahr 2004, stellte Google ein weiteres Konzept vor: MapReduce, ein Programmiermodell zur effizienten Verarbeitung großer Datenmengen.

Doug Cutting und Mike Cafarella, die zu diesem Zeitpunkt an einem Projekt namens Nutch arbeiteten, einem Open-Source-Webcrawler und einer Suchmaschine, erkannten das Potenzial dieser Konzepte, um ihre Herausforderungen im Umgang mit großen Datenmengen zu bewältigen. Inspiriert von Googles Arbeiten, begannen sie, eine Open-Source-Implementierung dieser Ideen zu entwickeln, was letztendlich zur Gründung von Hadoop führte. Der Name “Hadoop” stammt übrigens von einem Plüschelefanten, dem Spielzeug von Doug Cuttings Sohn.

Die ursprüngliche Idee hinter Hadoop war es, eine skalierbare und kosteneffiziente Lösung für die Speicherung und Analyse von Big Data zu schaffen. Im Kern besteht Hadoop aus zwei Hauptkomponenten:

Seit seiner ersten Veröffentlichung hat sich Hadoop schnell weiterentwickelt und ist zu einem umfassenden Ökosystem aus verschiedenen Tools und Technologien gewachsen, die unterschiedliche Aspekte der Datenverarbeitung und -analyse abdecken. Dazu gehören unter anderem:

Hadoop hat die Art und Weise, wie Unternehmen und Organisationen mit Daten umgehen, revolutioniert. Es ermöglicht die Speicherung und Analyse von Datenmengen in einer Größenordnung, die zuvor nicht handhabbar war, und hat damit den Weg für neue Einsichten und Innovationen in verschiedenen Branchen geebnet.

14.1.2 Grundprinzipien von Hadoop

Hadoop basiert auf zwei fundamentalen Prinzipien, die es ermöglichen, große Datenmengen effizient zu speichern und zu verarbeiten: die verteilte Speicherung durch das Hadoop Distributed File System (HDFS) und die parallele Datenverarbeitung durch das MapReduce-Programmiermodell. Diese Grundprinzipien sind entscheidend für die Leistungsfähigkeit und Skalierbarkeit von Hadoop.

14.1.2.1 Verteilte Speicherung (HDFS)

14.1.2.2 Parallele Datenverarbeitung (MapReduce)

Die Grundprinzipien von Hadoop – verteilte Speicherung durch HDFS und parallele Datenverarbeitung durch MapReduce – ermöglichen es, mit den Herausforderungen von Big Data effektiv umzugehen. Diese Konzepte bilden die Basis für die Skalierbarkeit, Flexibilität und Zuverlässigkeit, die Hadoop zu einer leistungsfähigen Lösung für die Speicherung und Analyse großer Datenmengen machen.

14.2 Hadoop Distributed File System (HDFS)

Das Hadoop Distributed File System (HDFS) ist ein verteiltes, skalierbares und portables Dateisystem, entwickelt für das Hadoop-Framework. Es wurde konzipiert, um mit großen Datenmengen effizient umzugehen und hohe Durchsatzraten zu unterstützen, indem es Daten auf einer Vielzahl von Maschinen speichert und verarbeitet. HDFS erreicht eine hohe Fehlertoleranz durch die Replikation von Daten.

14.2.1 Architektur von HDFS

Die Architektur von HDFS basiert auf einem Master/Slave-Prinzip, bestehend aus Namenodes (Master) und Datanodes (Slaves). Diese Konfiguration ermöglicht es HDFS, Daten effizient über viele Maschinen hinweg zu speichern und zu verwalten, wodurch es ideal für Anwendungen mit großen Datensätzen ist.

14.2.2 Funktionsweise

HDFS speichert Daten in Form von Dateien, die in Datenblöcke aufgeteilt sind. Diese Blöcke werden dann über mehrere Datanodes verteilt, um die Ausfallsicherheit zu erhöhen und die parallele Verarbeitung von Daten zu ermöglichen.

Durch diese Mechanismen sorgt HDFS für eine robuste und effiziente Verwaltung großer Datenmengen, was es zu einer Schlüsselkomponente im Hadoop-Ökosystem macht. Die Architektur und Funktionsweise von HDFS ermöglichen es Unternehmen und Organisationen, datenintensive Anwendungen und Analysen mit hoher Zuverlässigkeit und Skalierbarkeit durchzuführen.

14.3 Gruppenaufgabe: Erkundung des HDFS durch den Comic

14.3.1 Aufgabenstellung

Unterhalb dieser Aufgabe finden Sie einen Comic, der das Hadoop Distributed File System (HDFS) auf eine einzigartige und verständliche Weise erklärt. Ihre Gruppe soll diesen Comic durchgehen und die dargestellten Kernkonzepte sowie die Funktionsweise von HDFS mit eigenen Worten zusammenfassen. Die Übung soll Ihnen nicht nur ein Verständnis für HDFS vermitteln, sondern auch aufzeigen, wie ähnliche Konzepte in anderen IT-Bereichen, wie zum Beispiel bei Longhorn für Kubernetes, zur Anwendung kommen.

14.3.2 Teilaufgaben

  1. Comic-Zusammenfassung: Jedes Gruppenmitglied wählt einen Teil des Comics aus und fasst die Schlüsselinformationen individuell zusammen. Teilen Sie anschließend Ihre Zusammenfassungen innerhalb der Gruppe.

  2. Diskussion über HDFS: Führen Sie eine Gruppendiskussion über die Funktionsweise von HDFS durch. Berücksichtigen Sie dabei Aspekte wie Datenverteilung, Fehlertoleranz und Skalierbarkeit.

  3. Erkundung weiterer Anwendungsbereiche: Recherchieren und diskutieren Sie, inwiefern die bei HDFS verwendeten Prinzipien auch in anderen Technologien oder Projekten, wie Longhorn für Kubernetes, genutzt werden. Identifizieren Sie die adressierten Probleme und vergleichen Sie diese Technologien mit HDFS hinsichtlich ihrer Unterschiede und Gemeinsamkeiten.

14.3.3 Präsentation und Diskussion

Erstellen Sie basierend auf Ihrer Arbeit eine kurze Präsentation, in der Sie Ihre Erkenntnisse darlegen. Diese sollte folgende Punkte umfassen:

14.3.4 Ziel der Aufgabe

Ziel dieser Übung ist es, Ihnen ein fundiertes Verständnis von HDFS und dessen Rolle in der Datenverarbeitung zu vermitteln. Gleichzeitig sollen Sie erkennen, wie die Grundprinzipien verteilter Dateisysteme und ähnlicher Konzepte in verschiedenen Bereichen der IT eingesetzt werden, um Herausforderungen bezüglich Skalierbarkeit und Verfügbarkeit zu meistern. Durch das Verknüpfen von theoretischen Konzepten mit praktischen Anwendungen fördert diese Aufgabe Ihr kritisches Denken und Ihre Fähigkeit, IT-Konzepte über verschiedene Technologien hinweg zu adaptieren und anzuwenden.

14.4 MapReduce

MapReduce ist ein Programmiermodell und eine zugehörige Implementierung zur Verarbeitung und Generierung großer Datenmengen auf einem Cluster aus vielen Computern. Es wurde von Google eingeführt und ist ein Kernbestandteil verschiedener Big Data-Technologien, insbesondere von Hadoop. Die Stärke von MapReduce liegt in seiner Fähigkeit, komplexe Aufgaben über eine große Menge von Daten effizient zu verteilen und zu verarbeiten.

14.4.1 Konzept und Arbeitsweise

Das MapReduce-Modell basiert auf zwei Hauptfunktionen: Map und Reduce. Diese Funktionen definieren, wie Daten verarbeitet werden, um das Endergebnis zu erzeugen.

14.4.1.1 Map-Phase

In der Map-Phase liest und verarbeitet ein Mapper Eingabedaten und produziert Zwischenschlüssel-Wert-Paare. Jedes Eingabeelement wird unabhängig verarbeitet, was eine parallele Verarbeitung über ein Cluster ermöglicht. Die Map-Funktion wird für jedes Eingabe-Datenpaar (üblicherweise ein Schlüssel und ein dazugehöriger Wert) ausgeführt und erzeugt Zwischenausgaben in Form von Schlüssel-Wert-Paaren.

14.4.1.2 Reduce-Phase

In der Reduce-Phase werden alle Zwischenergebnisse, die denselben Schlüssel haben, vom Reducer genommen und zusammengeführt. Die Reduce-Funktion fasst die Werte für jeden Schlüssel zusammen, um eine kleinere Menge von Werten zu erzeugen – typischerweise nur einen Wert pro Schlüssel. Diese Phase ist verantwortlich für die Zusammenfassung und oft die Endberechnung der Daten.

14.4.2 Einfaches MapReduce-Beispiel

Um die Arbeitsweise von MapReduce zu demonstrieren, betrachten wir ein einfaches Beispiel: das Zählen der Vorkommen jedes Wortes in einem Text (Word Count).

14.4.2.1 Eingabedaten

Hello World
Hello MapReduce

14.4.2.2 Map-Phase

Die Map-Funktion zerlegt den Text in Worte und erzeugt ein Schlüssel-Wert-Paar für jedes Wort, wobei der Schlüssel das Wort selbst ist und der Wert 1, um ein Vorkommen des Wortes zu zählen.

14.4.2.3 Shuffle-Phase (Zwischenphase)

In dieser impliziten Phase, die hier der Vollständigkeit halber erwähnt wird, werden alle Schlüssel-Wert-Paare nach dem Schlüssel sortiert und an die Reduce-Funktion weitergeleitet. Die Ausgabe der Map-Phase wird also so organisiert, dass alle Werte mit demselben Schlüssel zusammengeführt und an die Reduce-Funktion übergeben werden.

14.4.2.4 Reduce-Phase

Die Reduce-Funktion summiert die Anzahl der Vorkommen für jedes Wort.

14.4.2.5 Endergebnis

Hello 2
World 1
MapReduce 1

Dieses einfache Beispiel illustriert, wie MapReduce genutzt werden kann, um aus einem großen Datensatz sinnvolle Informationen zu extrahieren. Durch die parallele Verarbeitung in der Map-Phase und die anschließende Aggregation in der Reduce-Phase ermöglicht MapReduce die effiziente Verarbeitung riesiger Datenmengen.

14.4.3 Übungsaufgabe: MapReduce-Prozess verstehen und anwenden

Ziel: Diese Übung soll das Verständnis des MapReduce-Prinzips vertiefen, indem Teilnehmer einen realen Datensatz manuell mit dem MapReduce-Prozess verarbeiten. Die Aufgabe wird ohne spezielle Tools durchgeführt, um die grundlegenden Konzepte von MapReduce zu verinnerlichen.

Datensatz: Gegeben sei eine Liste von Verkaufszahlen für verschiedene Produkte in verschiedenen Städten.

Stadt Produkt Verkaufszahlen
Berlin Schuhe 150
Berlin Hemden 75
München Schuhe 200
München Hemden 50
Köln Schuhe 50
Köln Hemden 95
Stuttgart Schuhe 100
Stuttgart Hemden 65

Aufgabe: Ermitteln Sie die Gesamtverkaufszahlen für jedes Produkt über alle Städte hinweg, indem Sie den MapReduce-Prozess manuell durchführen.

14.4.3.1 Schritt 1: Map-Phase

In der Map-Phase wird jeder Datensatz in ein Schlüssel-Wert-Paar transformiert. Der Schlüssel ist das Produkt, und der Wert sind die Verkaufszahlen.

Beispielausgabe:

14.4.3.2 Schritt 2: Shuffle- und Sort-Phase

In dieser Phase werden alle Schlüssel-Wert-Paare nach dem Schlüssel (Produkt) sortiert und gruppiert. Das Ziel ist es, alle Verkaufszahlen für dasselbe Produkt zusammenzubringen.

Beispielausgabe:

14.4.3.3 Schritt 3: Reduce-Phase

In der Reduce-Phase werden die Verkaufszahlen für jedes Produkt summiert, um die Gesamtverkaufszahlen zu erhalten.

Beispielausgabe:

Anleitung:

  1. Map-Phase: Schreiben Sie für jeden Eintrag im Datensatz ein Schlüssel-Wert-Paar auf ein separates Stück Papier oder in eine neue Tabellenzeile. Der Schlüssel ist der Produktname, und der Wert sind die Verkaufszahlen.

  2. Shuffle- und Sort-Phase: Ordnen Sie die Schlüssel-Wert-Paare nach dem Produkt. Gruppieren Sie alle Werte, die zum gleichen Produkt gehören, zusammen.

  3. Reduce-Phase: Summieren Sie die Verkaufszahlen für jedes Produkt. Schreiben Sie das Ergebnis in Form von Schlüssel-Wert-Paaren auf, wobei der Schlüssel das Produkt ist und der Wert die summierten Verkaufszahlen.

Zusatz:

Diese Übung vermittelt ein grundlegendes Verständnis des MapReduce-Prozesses und verdeutlicht, wie große Datenmengen in parallelen, verteilten Systemen effizient verarbeitet werden können.

14.5 YARN (Yet Another Resource Negotiator)

14.5.1 Zweck und Komponenten

YARN ist eine zentrale Komponente des Apache Hadoop-Ökosystems und dient als das Cluster-Management-System. Bevor YARN eingeführt wurde, war Hadoop auf das MapReduce-Framework beschränkt, das sowohl für die Verarbeitungslogik als auch für die Cluster-Ressourcenverwaltung zuständig war. Die Einführung von YARN brachte eine Trennung dieser Funktionen mit sich, wodurch Hadoop zu einem vielseitigeren und effizienteren System für die Datenverarbeitung wurde.

Zweck: YARN hat den Zweck, die Verwaltung von Rechenressourcen in einem Hadoop-Cluster zu optimieren und zu verallgemeinern. Es ermöglicht verschiedene Datenverarbeitungsengines wie MapReduce, Spark und andere, effektiv nebeneinander auf demselben Hadoop-System zu laufen, indem es die Ressourcenzuweisung und das Scheduling von Anwendungsprogrammen übernimmt.

Komponenten: YARN besteht aus mehreren Schlüsselkomponenten:

14.5.2 Funktionsweise

Die Funktionsweise von YARN lässt sich in mehrere Schlüsselprozesse unterteilen:

  1. Anwendungsanmeldung: Entwickler oder Anwendungssubmitter senden eine Anfrage an den ResourceManager, um eine Anwendung auszuführen. Diese Anfrage beinhaltet die benötigten Ressourcen und den zu startenden ApplicationMaster.

  2. Anwendungsinitialisierung: Der ResourceManager wählt einen NodeManager aus, der die erforderlichen Ressourcen für den Start des ApplicationMaster zur Verfügung stellen kann. Der ausgewählte NodeManager instanziiert daraufhin den ApplicationMaster.

  3. Ressourcenanforderung: Der ApplicationMaster fordert Ressourcen vom ResourceManager an, um die Anwendungsprozesse zu starten. Er gibt die Spezifikationen der benötigten Ressourcen (wie Speicher und CPU) und die Anzahl der benötigten Container an.

  4. Ressourcenzuweisung und Scheduling: Der Scheduler im ResourceManager nimmt diese Anforderungen entgegen und weist basierend auf der Verfügbarkeit und der Scheduler-Konfiguration Ressourcen zu. Sobald Ressourcen verfügbar sind, informiert der ResourceManager den ApplicationMaster über die zugewiesenen Container.

  5. Aufgabenverwaltung: Der ApplicationMaster startet dann die eigentlichen Anwendungsaufgaben in den zugewiesenen Containern, überwacht deren Ausführung und nimmt bei Bedarf weitere Ressourcenanforderungen vor.

Durch diesen Mechanismus kann YARN effizient Ressourcen innerhalb eines Hadoop-Clusters verwalten, wobei sowohl die Anforderungen der Anwendungen berücksichtigt werden als auch die Auslastung des Clusters optimiert wird. Diese Architektur ermöglicht eine bessere Ausnutzung der Cluster-Ressourcen und unterstützt die parallele Ausführung verschiedener Verarbeitungsframeworks und -anwendungen auf derselben Hadoop-Installation.

14.6 Hadoop-Ökosystem und Tools

Das Hadoop-Ökosystem besteht aus einer Vielzahl von Komponenten, die zusammenarbeiten, um umfassende Lösungen für die Verarbeitung, Analyse und Speicherung von Big Data zu bieten. Jedes Tool im Ökosystem ist für spezifische Aufgaben konzipiert und ergänzt die anderen Komponenten. In diesem Artikel werden wir einige der Schlüsseltools wie Hive, Pig, HBase und Spark vorstellen und diskutieren, in welchen Anwendungsfällen sie zum Einsatz kommen.

14.6.1 Hive

Überblick: Apache Hive ist ein Data-Warehouse-System für Hadoop, das die Datenabfrage und -analyse erleichtert. Hive ermöglicht es Benutzern, Daten mit einer SQL-ähnlichen Sprache namens HiveQL zu analysieren. Es wandelt Abfragen in MapReduce-, Tez- oder Spark-Jobs um, um eine skalierbare Analyse großer Datenmengen zu ermöglichen.

Anwendungsfälle: - Datenanalyse und -berichterstattung: Hive wird häufig für Business Intelligence und Reporting eingesetzt, da es komplexe Abfragen über große Datensätze hinweg ermöglicht. - Datentransformation: Es eignet sich für ETL-Prozesse (Extract, Transform, Load), bei denen Daten aus verschiedenen Quellen extrahiert, transformiert und in einem Data Warehouse abgelegt werden.

14.6.2 Pig

Überblick: Apache Pig ist eine Plattform zur Analyse großer Datenmengen, die eine hochgradig abstrahierte Skriptsprache namens Pig Latin verwendet. Pig vereinfacht die Entwicklung von MapReduce-Programmen, indem es komplexe Datenverarbeitungsaufgaben in eine einfache Skriptsprache übersetzt.

Anwendungsfälle: - Prototyping: Pig eignet sich hervorragend für das schnelle Prototyping von Datenflüssen und Transformationen. - Datenverarbeitungsaufgaben: Es wird für eine Vielzahl von Datenverarbeitungsaufgaben verwendet, einschließlich Datenbereinigung, ETL und aggregierte Berechnungen.

14.6.3 HBase

Überblick: Apache HBase ist eine verteilte, skalierbare, NoSQL-Datenbank, die auf dem Hadoop Distributed File System (HDFS) basiert. HBase bietet Echtzeit-Zugriff auf große Datenmengen und ist besonders geeignet für unstrukturierte Daten.

Anwendungsfälle: - Echtzeitabfragen: HBase wird in Anwendungen eingesetzt, die schnellen Zugriff auf große Datensätze erfordern, wie beispielsweise Web-Datenbanken und Echtzeitanalysen. - Log- und Event-Datenmanagement: Es ist ideal für die Speicherung und Verwaltung von Log- oder Event-Daten, die in hoher Geschwindigkeit generiert werden.

14.6.4 Spark

Überblick: Apache Spark ist ein Open-Source-Cluster-Computing-Framework, das speziell für schnelle und allgemeine Datenverarbeitungsaufgaben entworfen wurde. Spark bietet APIs in Java, Scala, Python und R, und es kann Daten von HDFS, HBase, Cassandra und anderen Quellen verarbeiten.

Anwendungsfälle: - Maschinelles Lernen und Datenanalyse: Spark wird häufig für maschinelles Lernen und komplexe Datenanalysen verwendet, dank seiner MLlib-Bibliothek und der Fähigkeit, interaktive Abfragen auszuführen. - Stream-Verarbeitung: Mit Spark Streaming können Echtzeitdatenströme verarbeitet werden, was es zu einer guten Wahl für Anwendungen wie Echtzeit-Monitoring und Ereigniserkennung macht.

14.6.5 Zusammenfassung

Das Hadoop-Ökosystem bietet eine robuste und skalierbare Lösung für die Verarbeitung und Analyse von Big Data. Die Vielfalt der Tools ermöglicht es Entwicklern und Datenwissenschaftlern, eine breite Palette von Datenverarbeitungsaufgaben effektiv zu bewältigen, von ETL-Prozessen und Datenanalyse bis hin zu Echtzeitabfragen und maschinellem Lernen. Durch die Kombination dieser Tools können Organisationen wertvolle Einblicke aus ihren Daten gewinnen und datengesteuerte Entscheidungen treffen.