Big Data - Die Serie Teil 02

Big Data mit Hadoop?

Teil 2 der großen Big Data Serie befasst sich mit der Frage: Wer hängt im Hadoop-Ökosystem mit wem zusammen?

© The Apache Software Foundation

Ein Blick auf die grundlegende Architektur von Big Data -Systemen zeigt die typischen Rollen. Diese Rollen sind in allen Big Data Systemen zu finden. Sie können je nach System mit unterschiedlichen Tools besetzt sein.

Der historisch erste und bekannteste Big Data Stack ist das Hadoop-Ökosystem. Wir werfen einen Blick auf die grundlegenden Werkzeuge dieses Stacks.

Das Who-Is-Who des Hadoop-Stacks

Einspeisung von Daten:
Alle arbeiten mit relationalen Datenbanken. Daher ist es naheliegend, relationale Datenbanksysteme auszulesen und die Daten in den Data Lake zu pumpen. Zu diesem Zweck wurde Sqoop (SQL-to-hadoop) entwickelt. Auch umgekehrt können Daten aus dem Data Lake in eine relationale Datenbank exportiert werden.

Nicht immer liegen Daten schön aufbereitet und strukturiert wie in einer relationalen Datenbank vor. Um andere Datenformate wie Logeinträge oder E-Mails einzuspeisen, ist Flume entwickelt worden. Damit können Daten in einem Cluster eingesammelt und aggregiert werden. Flume wird sehr häufig eingesetzt, um Logdateien von unterschiedlichen Knoten einzusammeln und in Hadoop auswertbar zu machen. Es wird eine Menge an unterschiedlichen Quellen  unterstützt, die 'out-of-the-box' angezapft werden können.

Das universellste Werkzeug zur Einspeisung von Daten ist Apache Kafka. In Kafka können Datenquellen angezapft und deren Daten als kontinuierliche Datenströme publiziert und abonniert werden. Diese Datenströme können mit Kafka im Data Lake gespeichert oder direkt der Verarbeitung übergeben werden. Kafka besitzt Schnittstellen zu unterschiedlichen Datenquellen wie relationalen Datenbanken, NoSql-Datenbanken und vielen weiteren Systemen, so dass eine weite Spanne an Datenquellen gelesen werden kann.

Für Dateneingänge mit stark schwankendem Datenaufkommen bietet Kafka die Möglichkeit, Daten vor ihrer Einspeisung dauerhaft zwischen zu speichern. Damit ist sichergestellt, dass nichts verloren geht, auch wenn die Einspeisung in das Cluster langsamer als das Datenaufkommen ist (back pressure).

Verteilte Datenhaltung:
Jetzt betritt der Star die Bühne. Apache HDFS ist das verteilte Dateisystem im Hadoop-Stack und hat eine zentrale Rolle. In HDFS können beliebige Dateiformate abgelegt werden. Ideal um Dateien aus unterschiedlichsten Datenquellen abzuspeichern.

Es ist leichter, Daten an das Ende einer Datei anzuhängen, als innerhalb der Datei Daten zu verändern. Daher kommt HDFS zum Einsatz, wenn Daten eingefügt, weniger wenn sie verändert werden. Dieses Scenario heist 'write-once and read-many times'.

HDFS spielt seine Stärken bei Batch-Analysen aus. Das Lesen und Schreiben in das verteilte Dateisystem ist nicht besonders schnell. Eine Unterstützung für Suchen nach bestimmten Dateien oder Datensätzen gibt es nicht. Echtzeit-Verarbeitung ist damit nicht möglich.

Neben den unbestrittenen Stärken von HDFS sind auch einige Einschränkungen zu erkennen. Diese haben dazu geführt, dass sich mit Apache HBase ein weiteres Datenhaltungssystem etabliert hat. HBase ist eine verteilte NoSQL-Datenbank. Es gehört zur Familie der wide-column Datenbanken und ist geeignet, sehr große Datenmengen zu verwalten. Die Daten werden in HDFS gespeichert, wozu ein eigenes Dateiformat genutzt wird. Als NoSQL-Datenbank hat HBase natürlich die oben beschriebenen Nachteile von HDFS nicht und unterstützt Veränderungen von Daten sowie die Suche nach einzelnen Datensätzen.

Verteilte Datenverarbeitung:
Eine verteilte Datenverarbeitung basiert auf den Informationen, welche Ressourcen im Cluster verfügbar sind. Werkzeuge mit dem Fokus auf der Verwaltung von Clusterressourcen heißen Clustermanagement. Apache Yarn ist ein solches Werkzeug und bietet eine Plattform, die andere Werkzeuge zur verteilten Verarbeitung nutzen.

Die derzeit prominentesten Vertreter der verteilten Verarbeitung sind die sognannten streaming platforms. Sie lassen sowohl Stream-als auch Batchprocessing zu. Apache Spark ist die wohl am meisten verbreitete Plattform. Sparkunterstützt sein eigenes Programmiermodell für verteilte Verarbeitung und setzt bei der Ausführung[1] seiner Jobs auf Yarn.
Basierend auf diesem Modell sind Bibliotheken für SQL, Machine Learning oder Graphenverarbeitung hinzugekommen.

In einem Atemzug mit Spark muss Apache Flink genannt werden. Flink hat ein Programmiermodell, welches vergleichbar mit Spark ist und nutzt auch Yarn zur Ausführung[2] der Jobs. Ebenfalls existieren Bibliotheken für SQL,Machine Learning oder Graphenverarbeitung.

Datawarehouse-Funktionalität

Wie kann ich Daten anschauen und analysieren? Wie kann ich Beziehungen zwischen Daten sichtbar machen? Gäbe es doch bloß das gute, alte SQL.

Apache Hive ist die Rettung und bietet Datawarehouse-Funktionalität bzgl. strukturierter Daten, welche in HDFS verwaltet werden. Dabei nutzt Hive Konzepte, die aus der Welt der relationalen Datenbanken bekannt sind. Es können Tabellen definiert oder Abfragen im Stil von SQL formuliert und ausgeführt werden.
Hive bietet Schnittstellen, um herkömmliche Werkzeuge des BI (Business Intelligence) wie PowerBI, Tableau oder Qlik anzuwenden.

Alle Werkzeuge im Überblick

Jedes dieser Werkzeuge verdient eine eingehendere Betrachtung. Damit befassen sich die weiteren Artikel dieser Serie.


[1] Spark unterstützt neben Yarn noch weiter Ausführungsumgebungen

[2] Ebenso wie Spark unterstützt auch Flink neben Yarn noch weiter Ausführungsumgebungen


Artikel 01 der Big Data Serie: Hilfe, wo soll ich anfangen?

Artikel 03 der Big Data Serie: Wohin mit meinen Daten?

Artikel 04 der Big Data Serie: Wie verpacke ich meine Daten?

 

Jetzt teilen: