Hadoop
Inhaltsverzeichnis
Einsatzzweck
Apache Hadoop kommt überall dort zum Einsatz, wo der Umgang mit Big Data erforderlich ist. Das ist zum Beispiel bei mittleren bis großen Unternehmen der Fall, bei denen entsprechend große Datenmengen vorliegen. Ein Einsatz der Software ist dann sinnvoll, wenn diese Daten in unstrukturierter oder halbstrukturierter Form vorliegen und für Anfragen und Analysen nutzbar gemacht werden sollen. Weitere Einsatzbereiche ergeben sich, wenn die flexible Entwicklung von individuellen Funktionen für die Datenanalyse durch die eigenen Programmierer gewünscht ist.
Features
Eines der wichtigsten Merkmale ist die Open-Source-Lizenz. Dabei handelt es sich um eine frei verfügbare Software, die Unternehmen nach ihren eigenen Bedürfnissen nutzen können. Dazu gehört auch, dass sich die Analysetools für die Datenverarbeitung entsprechend der eigenen Anforderungen maßschneidern lassen. Dank der Verwendung des Dateisystems Hadoop Distributed File System (HDFS) ist außerdem eine Verteilung der Daten auf mehrere Rechner im Cluster möglich.
Weiterhin bietet Hadoop eine hohe Fehlertoleranz. Jeder Block wird dabei standardmäßig dreimal im Cluster abgelegt. Der Ausfall eines einzelnen Knotens spielt beim Zugriff auf die Daten daher keine Rolle.
Hadoop bietet zudem eine hohe Verfügbarkeit und Skalierbarkeit. Damit lässt es sich auch in anspruchsvollen und sensiblen Umgebungen einsetzen. Zudem setzt Hadoop auf das Prinzip der Datenlokalität. Darunter ist zu verstehen, dass Verarbeitungsprozesse wie etwa ein MapReduce Algorithmus zu den Daten gebracht wird, statt die Daten zum Algorithmus zu bringen. Der Programmcode wird also direkt auf den Servern des Hadoop Clusters ausgeführt und nicht auf den Client-Servern. Damit lassen sich zeitintensive Datenübertragungen im Netzwerk vermeiden. Das ist gerade im Umgang mit Big Data sehr vorteilhaft.
Architektur
Hadoop dient in den Unternehmen als Ökosystem für das Zusammenspiel mit einer Vielzahl von Erweiterungen. Die Bereitstellung dieses Ökosystems basiert in der Praxis vor allem auf den beiden Architekturen Lambda und Kappa. Bei beiden handelt es sich um Echtzeit Big-Data-Architekturen, die für die Verarbeitung von großen Datenmengen ausgerichtet sind. Die Architektur ist so ausgelegt, dass eine Anwendung bei kontinuierlichem und uneingeschränktem Datenfluss möglich ist. Die Architekturen können mit Unstimmigkeiten im Datenstrom umgehen, sind erweiterbar und bieten eine hohe Skalierbarkeit und Fehlertoleranz. Antworten erhält der Nutzer auf Grundlage einer aktuellen Momentaufnahme der Daten in der Datenbank und damit in Echtzeit. Entscheidungen und Strategien beruhen somit auf verlässlicheren Informationen. Das steigert nicht nur das Vertrauen ins Management, sondern führt auch zu einer grundsätzlichen Optimierung vieler Unternehmensprozesse.
Lambda-Architektur
Die Lambda Architektur besitzt verschiedene Layer wie zum Beispiel den Batch Layer für die Verarbeitung der Daten in längerdauernden Batchprozessen, d.h. Stapelverarbeitungen. Das unterstützt beispielsweise Hadoop MapReduce.
Echtzeit Anfragen werden vom Speed Layer verarbeitet. Dieser ist nützlich für hohe Datenströme, wie sie zum Beispiel in der Industrie 4.0 oder im Internet of Things (IoT) anfallen. Auch soziale Netzwerke oder Algorithmen im Bereich Machine Learning greifen auf den schnellen Speed Layer zurück.
Hinzu kommt ein Serving Layer, der dem Benutzer die Ergebnisse aus dem Batch Layer und dem Speed Layer zur Verfügung stellt. Die Kappa Architektur unterscheidet sich dadurch, dass hier auf einen Batch Layer vollkommen verzichtet wird. Stattdessen werden nur Live Events betrachtet.
Verwaltung mit HBase
In der Praxis erfolgt der Einsatz von Hadoop fast immer gemeinsam mit verschiedenen Erweiterungen. Diese sind bei Hadoop besonders vielfältig. Dazu gehört zum Beispiel die Erweiterung HBase. Mit HBase lassen sich große Datenmengen in einem Hadoop Cluster einfach verwalten. Zudem fällt die Skalierbarkeit hoch aus. Für die Umsetzung dieser Erweiterung wird eine freie Implementierung von Google BigTable verwendet. Der Einsatz in der Praxis erfolgt vor allem in solchen Szenarien, in denen die Datenbestände zwar selten geändert, aber häufig erweitert werden. Nützlich ist HBase immer dann, wenn kleine Datenmengen aus großen Datenbeständen verarbeitet werden sollen.
Weitere Erweiterungen
Neben HBase gibt es in Hadoop noch weitere Erweiterungen:
- Hive: Hive erweitert Hadoop um Data-Warehouse-Funktionalitäten, darunter:
- Verwendung von HiveQL, einer auf SQL basierenden Abfragesprache.
- Unterstützung einer SQL99-ähnlichen Syntax.
- Integration von Hybrid Procedural SQL On Hadoop (HPL/SQL) seit Hive 2.0.
- Einsatz von ORC-Tabellenformaten, LLAP und anderen Optimierungen für interaktive Abfragen.
- Fortschritte aus der Stinger-Initiative, einschließlich Unterstützung von SQL:2011 Analytics.
- Erweiterungen wie HiveMall für in-database Analytics in Machine-Learning-Anwendungen.
- Empfohlene Nutzung von ORC-Format mit Komprimierung, Bloom-Filtern und Storage-Indexen für bessere Leistung in Data-Warehouse-Szenarien.
- Pig und Pig Latin:
- Pig erstellt Hadoop MapReduce-Programme in Pig Latin.
- Einfachheit, Optimierung, Erweiterbarkeit charakterisieren Pig.
- Chukwa, ZooKeeper und Spark:
- Chukwa ermöglicht Echtzeitüberwachung verteilter Systeme.
- ZooKeeper für Konfiguration von verteilten Systemen.
- Spark als in-memory Batch Processing Engine für Machine-Learning.
- Flink und Ignite:
- Flink als in-memory Stream Processing Engine mit Fokus auf Machine Learning und Complex Event Processing.
- Ignite als verteilter Big-Data Cache zur Beschleunigung von Abfragen.
Funktionsweise
Als Dateisystem mit hoher Verfügbarkeit setzt Hadoop auf das Hadoop Distributed File System (HDFS). Dieses Dateisystem ist zugeschnitten auf große Datenmengen. Die Speicherung der Daten erfolgt verteilt auf mehreren Rechnern oder Knoten. Die Knoten lassen sich dabei in übergeordnete Kund untergeordnete Knoten unterscheiden. Der übergeordnete Knoten (auch Resource Manager) ist für die Bearbeitung von eingehenden Anfragen zuständig und kümmert sich um die Zuteilung der zu speichernden Daten an die untergeordneten Knoten (auch Node Manager genannt). Dort erfolgt dann die eigentliche Datenablage.
Das Dateisystem arbeitet so effizient, dass eine Unterstützung von mehreren hundert Millionen Dateien möglich ist. Der Anwender hat dabei die Kontrolle über die Länge der Dateiblöcke und den Redundanzgrad beim Ablegen der Daten auf den verschiedenen Knoten.
Hadoop setzt vor allem bei großen Dateien auf HDFS. Für die Verwaltung kleinerer Dateien kommt stattdessen Hadoop Archives (HAR) zum Einsatz. Bei Bedarf ist es möglich, HDFS durch andere Dateisysteme zu ersetzen. Dabei kommen zum Beispiel Azure Blockstorage oder MapRFS infrage.
MapReduce Algorithmus
MapReduce bildet das zentrale Element von Apache Hadoop und ermöglicht eine mächtige Skalierung über tausende Server in einem Hadoop Cluster. Dieses Programmierkonzept ist intuitiv verständlich und besteht aus zwei Hauptaufgaben: dem Map und dem Reduce Task. Zu Beginn erfolgt der Map Job, der eine bestimmte Datenmenge von den Hadoop Workern abruft und in eine andere Datensammlung umwandelt. Dabei werden individuelle Datenpunkte in Paare von Schlüssel-Wert-Tupeln zusammengefasst. Im Anschluss übernimmt der Reduce Job den Output des Map Jobs und aggregiert die erstellten Tupel zu einer kleineren Menge von Tupeln. Hierbei erfolgt der Reduce Job stets nach dem Map Job.
Integration
Die verschiedenen für die Berechnungen erforderlichen Knoten befinden sich in einem sogenannten Cluster. Der Anwender entscheidet selbst, wo er diesen Cluster einrichten möchte. Der Betrieb von Hadoop erfolgt entweder auf lokaler Hardware oder in der Cloud. Richtet das Unternehmen den Cluster auf eigener Hardware ein, muss eine IT-Infrastruktur für den Betrieb und die Wartung bereitgestellt werden. Hier stellt sich die Frage nach der Ausfallsicherheit und den entstehenden Kosten.
Cluster oder Cloud?
In der Regel wird Hadoop heute in der Cloud betrieben. Ein vollwertiger Cluster lässt sich zum Beispiel mit HDInsight in der Cloud einrichten. Hierbei handelt es sich um einen Dienst innerhalb der Microsoft Cloud Azur. Aus Sicht der Unternehmen ergibt sich bei der Cloud-Lösung immer der Vorteil einer einfacheren Verwaltung und Konfiguration.
Das Aufspielen neuer Versionen, die Wartung und die Herstellung der Ausfallsicherheit übernimmt der externe Dienstleister, der die Cloud zur Verfügung stellt. Für die Unternehmen ergibt sich der Vorteil, dass sie einen lokal betriebenen Cluster jederzeit in die Cloud migrieren können. Ein Einstieg mit einer kleinen Cluster-Konfiguration mit einfacherer Integration ist also lokal möglich. Bei höherem Ressourcenbedarf kann der Weg in die Cloud zu einem späteren Zeitpunkt noch immer beschritten werden.
Vorteile von Hadoop
Zu den Vorteilen von Hadoop gehört die Bereitstellung unter der Apache Lizenz. Der Erwerb zusätzlicher Lizenzen ist nicht erforderlich. Das bedeutet, dass die Software ohne Kosten eingesetzt werden kann. Es fallen wie üblich nur laufende Kosten für den Betrieb der Hardware an. Sinnvoll ist der Einsatz gemeinsam mit Linux als zugrundeliegendem Betriebssystem. Die meisten Linux Distributionen sind ebenfalls kostenlos verfügbar. Unternehmen zahlen jedoch dann, wenn sie den Support nutzen möchten oder für Hadoop zusätzliche Dienste benötigen.
Besonderheiten
Besonders an Hadoop ist die Unterstützung von transparenten Dateiformaten. Je nach Anwendung können andere Dateiformate unabhängig davon genutzt werden, ob es sich um strukturierte oder unstrukturierte Formate handelt. Textformate unterstützt Hadoop ebenfalls. Dazu gehören zum Beispiel die beiden weit verbreiteten Formate CSV oder JSON. Auch hochoptimierte tabellarische Formate wie Parquet oder schemenbasierte Dateien wie Apache Avro unterstützt Hadoop. Dafür stehen viele Plugins zur Verfügung. Außerdem ist es relativ einfach möglich, eigene Dateiformate für Hadoop zu entwickeln und diese exakt auf die Bedürfnisse der einzelnen Mitarbeiter und Nutzergruppen zuzuschneiden.
Fazit
Apache Hadoop bietet viele fortschrittliche Funktionen für den Umgang mit Big Data. Zu den Stärken gehört die Auslieferung in Form einer flexiblen Lizenz, wie sie bei Apache auch bei dem Betriebssystem Linux bekannt ist. Unternehmen können mit dem Einsatz von Hadoop beginnen, ohne gleich finanzielle Risiken eingehen zu müssen. Dank der vielfältigen Erweiterungen ist Hadoop in hohem Maße ausbaufähig. Der Einsatz erscheint auch deshalb als sinnvoll, weil bereits viele Unternehmen auf Hadoop setzen und viele Entwickler mit dem Programmieren für Hadoop vertraut sind. Interessant ist Hadoop besonders für alle Unternehmen, die sich ohnehin schon intensiv in einem Java Umfeld bewegen.
FAQ
Was ist Hadoop?
Hadoop ist ein Open Source Framework, das Big Data Verarbeitungen unterstützt. Es basiert auf Java und wurde von der Apache Software Foundation entwickelt.
Welche Vorteile hat Hadoop?
Hadoop macht die Nutzung großer Datenmengen effektiver und schneller möglich, weil Informationen aus den verschiedensten Quellen berücksichtigt werden können. Die Lizenz ist kostenfrei erwerbbar und eignet sich insbesondere für Unternehmen, die bereits Java verwenden.
Was ist ein Hadoop Cluster?
Ein Hadoop-Cluster bildet den Zusammenschluss mehrerer Server zu einem mächtigen Computer-Cluster. Dies ermöglicht die Speicherung und Analyse gigantischer Datenmengen. Dank der Verteilung der Rechenleistung können besonders rechenintensive Datenverarbeitungen effizient bewältigt werden. Dieses Cluster-Konzept revolutioniert die Art und Weise, wie wir mit großen Datenmengen umgehen und ermöglicht es, umfangreiche Datensätze problemlos zu handhaben und umfassende Analysen durchzuführen.