Apache Hadoop
Was ist Apache Hadoop?
Hadoop ist ein Open-Source-Framework für das Verwalten von Datenverarbeitung und -speicherung für Big-Data-Anwendungen in skalierbaren Clustern von Servern. Hadoop steht im Mittelpunkt eines Ökosystems von Big-Data-Technologien, die in erster Linie bei fortschrittlichem Analyseinitiativen zum Einsatz kommt, darunter prädiktive Analysen, Data Mining und maschinelles Lernen. Hadoop-Systeme verarbeiten verschiedene Formen strukturierter und unstrukturierter Daten und bieten den Benutzern mehr Flexibilität beim Erfassen, Verarbeiten, Analysieren und Verwalten von Daten als relationale Datenbanken und Data Warehouses.
Die Fähigkeit von Hadoop, verschiedene Arten von Daten zu verarbeiten und zu speichern, macht es zu einer besonders guten Lösung für Big-Data-Umgebungen. Diese umfassen in der Regel nicht nur große Datenmengen, sondern auch eine Mischung aus strukturierten Transaktionsdaten sowie semistrukturierten und unstrukturierten Informationen, wie zum Beispiel Clickstream-Datensätze, Webserver- und mobile Anwendungsprotokolle, Beiträge in sozialen Medien, Kunden-E-Mails und Sensordaten aus dem Internet der Dinge (IoT).
Die offiziell als Apache Hadoop bekannte Technologie ist Teil eines Open-Source-Projekts innerhalb der Apache Software Foundation entwickelt. Mehrere Anbieter bieten kommerzielle Hadoop-Distributionen an, obwohl die Zahl der Hadoop-Anbieter aufgrund eines überfüllten Marktes und des Wettbewerbsdrucks durch Big-Data-Systeme in der Cloud zurückgegangen ist. Das Verlagern in die Cloud ermöglicht es den Benutzern, Daten in kostengünstigeren Cloud-Objektspeicherdiensten anstelle des namensgebenden Dateisystems von Hadoop zu speichern; infolgedessen wird die Rolle von Hadoop in Big-Data-Architekturen zurückgegangen.
Hadoop und große Daten
Hadoop läuft auf handelsüblichen Servern und lässt sich auf Tausende von Hardwareknoten skalieren. Das verteilte Dateisystem von Hadoop (Hadoop Distributed File System, HDFS) wurde entwickelt, um einen schnellen Datenzugriff über die Knoten in einem Cluster hinweg zu bieten und dabei besonders fehlertolerant zu sein, damit Anwendungen selbst dann weiterlaufen, wenn einzelne Knoten ausfallen. Diese Funktionen trugen dazu bei, dass sich Hadoop nach seiner Einführung Mitte der 2000er Jahre zu einer grundlegenden Datenverwaltungsplattform für Big-Data-Analysen entwickelt hat.
Da Hadoop ein so breites Spektrum an Daten verarbeitet und speichert, richten viele Anwender Data Lakes als umfangreiche Speicher für eingehende Informationsströme ein. In einem Hadoop Data Lake werden die Rohdaten häufig unverändert gespeichert, damit Data Scientists und andere Analysten bei Bedarf die vollständigen Datensätze vorfinden. Die Daten werden dann von Analyse- oder IT-Teams gefiltert und aufbereitet, um verschiedene Anwendungen zu unterstützen.
Data Lakes dienen im Allgemeinen anderen Zwecken als herkömmliche Data Warehouses, die bereinigte Sätze von Transaktionsdaten enthalten. In einigen Fällen betrachten Unternehmen ihre Hadoop Data Lakes jedoch als moderne Data Warehouses. In jedem Fall hat die wachsende Bedeutung von Big-Data-Analysen für die Entscheidungsfindung dazu geführt, dass effektive Data-Governance- und Datensicherheitsprozesse bei Data-Lake-Implementierungen und Hadoop-Systemen im Allgemeinen eine hohe Priorität haben.
Komponenten von Hadoop und ihre Funktionsweise
Die Kernkomponenten der ersten Version von Hadoop waren MapReduce, HDFS und Hadoop Common, eine Reihe von gemeinsamen Dienstprogrammen und Bibliotheken. Wie der Name schon sagt, verwendet MapReduce Map- und Reduce-Funktionen, um Verarbeitungsaufträge in mehrere Tasks aufzuteilen, die an die verteilten Knoten gehen. Danach kombiniert das Programm die Ergebnisse der verteilten Analysen zu einem kohärenten Satz von Ergebnissen. Ursprünglich fungierte MapReduce sowohl als Hadoop-Verarbeitungsmaschine als auch als Cluster-Ressourcenmanager; HDFS war direkt damit verbunden und die Benutzer somit auf MapReduce-Batch-Anwendungen beschränkt.
Das änderte sich mit Hadoop 2.0, das im Oktober 2013 mit der Version 2.2.0 allgemein verfügbar wurde. Mit ihr trat Apache Hadoop YARN auf den Plan, eine neue Technologie für die Verwaltung von Cluster-Ressourcen und die Planung von Aufträgen, die diese Funktionen von MapReduce übernommen hat. YARN – die Abkürzung steht für Yet Another Resource Negotiator (noch ein weiterer Ressourcenvermittler) – beendete die strikte Abhängigkeit von MapReduce und öffnete Hadoop für andere Verarbeitungs-Engines und verschiedene Anwendungen jenseits der bisherigen Batch-Jobs. Hadoop führt jetzt Anwendungen auf den Engines Apache Spark, Apache Flink, Apache Kafka und Apache Storm aus.
In Hadoop-Clustern sitzt YARN zwischen dem HDFS und den von den Benutzern angebundenen Verarbeitungs-Engines. Der Ressourcenmanager verwendet eine Kombination aus Containern, Anwendungskoordinatoren und Überwachungsagenten auf Knotenebene, um den Anwendungen dynamisch Cluster-Ressourcen zuzuweisen und die Ausführung von Verarbeitungsaufträgen in einem dezentralen Prozess zu überwachen. YARN unterstützt mehrere Ansätze zur Auftragsplanung, darunter eine First-in-First-out-Warteschlange und mehrere Methoden, um Aufträge auf der Grundlage der zugewiesenen Clusterressourcen zu planen.
Mit der Hadoop 2.0-Reihe kamen außerdem Hochverfügbarkeits- und Verbundfunktionen für HDFS und Funktionen für den Betrieb von Hadoop-Clustern auf Microsoft-Windows-Servern hinzu. Mit der Zeit wuchs die Vielseitigkeit des verteilten Verarbeitungsframeworks für Big Data-Management und -Analysen immer weiter.
Hadoop 3.0.0 war die nächste große Version von Hadoop. Sie wurde von Apache im Dezember 2017 veröffentlicht und fügte YARN-Föderation hinzu, dank der YARN mehr als die bisherigen Zehntausend Knoten in einem Cluster verwalten kann. Die neue Version bot außerdem Unterstützung für GPUs und Erasure Coding, eine Alternative zur Datenreplikation, die deutlich weniger Speicherplatz benötigt.
Die nachfolgenden Updates 3.1.x und 3.2.x erlaubten es Hadoop-Benutzern, YARN-Container innerhalb von Docker-Containern auszuführen, und führten ein YARN-Service-Framework ein, das als Container-Orchestrierungsplattform fungiert. Mit diesen Versionen kamen zwei neue Hadoop-Komponenten hinzu: eine Engine für maschinelles Lernen namens Hadoop Submarine und der Objektspeicher Hadoop Ozone, der auf der Blockspeicherschicht Hadoop Distributed Data Store aufbaut und für den Einsatz in lokalen Systemen konzipiert ist.
Die Bedeutung von Hadoop für seine Nutzer
Trotz des Aufkommens alternativer Angebote, insbesondere in der Cloud, ist Hadoop aus den folgenden Gründen nach wie vor eine wichtige und wertvolle Technologie für Big-Data-Nutzer:
- Es kann große Mengen an strukturierten, halbstrukturierten und unstrukturierten Daten schnell speichern und verarbeiten.
- Es schützt Anwendungen und Datenverarbeitung vor Hardwareausfällen. Wenn ein Knoten in einem Cluster ausfällt, werden die Verarbeitungsaufträge automatisch auf andere Knoten umgeleitet, damit die Anwendungen weiterhin funktionieren.
- Es ist nicht erforderlich, dass Daten für das Speichern vorbearbeitet werden. Sie können Rohdaten in HDFS speichern und später entscheiden, wie Sie diese für bestimmte Analysezwecke verarbeiten und filtern möchten.
- Es ist skalierbar, das heißt es lassen sich relativ einfach neue Knoten hinzufügen.
- Hadoop unterstützt Echtzeitanalysen, um bessere betriebliche Entscheidungen zu treffen, aber auch Batch-Workloads für historische Analysen.
Hadoop-Anwendungen und Anwendungsfälle
YARN hat die Anwendungsmöglichkeiten von Hadoop-Clustern erheblich erweitert. Mittlerweile lassen sich damit interaktive Abfragen, Stream-Verarbeitung und Echtzeitanalysen umsetzen. So nutzen Fertigungsbetriebe, Versorgungsunternehmen, Öl- und Gasfirmen und andere Unternehmen Echtzeitdaten, die von IoT-Geräten in Hadoop-Systeme strömen, für Anwendungen zur vorausschauenden Wartung, um Geräteausfälle zu erkennen, bevor sie auftreten. Betrugserkennung, Website-Personalisierung und Bewertung der Kundenerfahrung sind weitere Echtzeitanwendungen.
Einige andere häufige Anwendungsfälle für Hadoop sind folgende
- Kundenanalytik. Beispiele hierfür sind die Vorhersage der Kundenabwanderung, die Analyse von Clickstream-Daten zur besseren Ausrichtung von Online-Werbung auf Webnutzer und das Testen der Kundenstimmung durch das Auswerten von Kommentaren in sozialen Netzwerken.
- Risikomanagement. Finanzdienstleister nutzen Hadoop-Cluster, um genauere Risikoanalysemodelle für den internen Gebrauch und für ihre Kunden zu entwickeln. Sie erstellen Investitionsmodelle und entwickeln Handelsalgorithmen in Hadoop-basierten Big-Data-Systemen.
- Operative Intelligenz. Hadoop ist in der Lage, die Übertragungsleistung sowie die Netz- und Frequenzauslastung für die Kapazitätsplanung und -verwaltung zu analysieren. Indem sie die Verbindungsqualität und Bandbreite im Servicegebiet auswerten, identifizieren Telekommunikationsunternehmen die besten Standorte für neue Mobilfunkmasten und schneller auf Netzprobleme reagieren.
- Lieferkettenoptimierung. Hersteller, Einzelhändler und Spediteure nutzen Hadoop-Systeme, um den Transport von Waren und Fahrzeugen zu verfolgen und so die Kosten für verschiedene Transportoptionen zu ermitteln. Darüber hinaus können sie große Mengen historischer, mit Zeitstempeln versehener Standortdaten analysieren, um Verspätungen vorherzusehen und Lieferrouten zu optimieren.
Diese Liste bietet nur einen Überblick über typische Einsatzszenarien. Hadoop eignet sich für viele Situationen, in denen große Datensätze monetarisierbare Informationen beherbergen.
Big-Data-Tools in Verbindung mit Hadoop
Das Ökosystem, das sich um Hadoop herum gebildet hat, umfasst eine Reihe anderer Open-Source-Technologien, welche die grundlegenden Funktionen von Hadoop ergänzen und erweitern. Dazu gehören:
- Apache Flume, ein Tool zum Sammeln, Aggregieren und Verschieben großer Mengen von Streaming-Daten in HDFS;
- Apache HBase, eine verteilte Datenbank, die oft mit Hadoop gepaart wird;
- Apache Hive, ein SQL-on-Hadoop-Tool, das Datenzusammenfassung, -abfrage und -analyse ermöglicht;
- Apache Oozie, ein serverbasiertes Workflow-Planungssystem zum Verwalten von Hadoop-Aufträgen;
- Apache Phoenix, eine SQL-basierte Datenbank-Engine für die massive Parallelverarbeitung, die HBase als Datenspeicher verwendet;
- Apache Pig, eine High-Level-Plattform zum Erstellen von Programmen, die auf Hadoop-Clustern laufen;
- Apache Sqoop, ein Tool zum Übertragen von Massendaten zwischen Hadoop und strukturierten Datenspeichern, wie zum Beispiel relationalen Datenbanken; und
- Apache ZooKeeper, ein Konfigurations-, Synchronisations- und Namensregistrierungsdienst für große verteilte Systeme.
Geschichte von Hadoop
Hadoop wurde von den Informatikern Doug Cutting und Mike Cafarella entwickelt. Zunächst lief es im Hintergrund der Open-Source-Suchmaschine und dem Web-Crawler Nutch. Nachdem Google in den Jahren 2003 und 2004 technische Papiere veröffentlicht hatte, in denen das Google-Dateisystem und das MapReduce-Programmiergerüst beschrieben wurden, änderten Cutting und Cafarella frühere Technologiepläne und entwickelten eine Java-basierte MapReduce-Implementierung und ein Dateisystem nach dem Vorbild von Google.
Anfang 2006 wurden diese Elemente von Nutch abgespalten und zu einem separaten Apache-Unterprojekt, das Cutting nach dem ausgestopften Elefanten seines Sohnes Hadoop nannte. Zur gleichen Zeit wurde Cutting vom Internetdienstleister Yahoo eingestellt, der später im Jahr 2006 der erste produktive Nutzer von Hadoop wurde.
Die Beliebtheit des Frameworks nahm in den nächsten Jahren zu, und es wurden drei unabhängige Hadoop-Anbieter gegründet: Cloudera im Jahr 2008, MapR Technologies ein Jahr später und Hortonworks als Yahoo heraus im Jahr 2011. Darüber hinaus führte AWS 2009 einen Hadoop-Cloud-Service namens Elastic MapReduce ein. Das alles war, bevor Apache Hadoop 1.0.0 veröffentlichte, das im Dezember 2011 nach einer Reihe von 0.x-Versionen verfügbar wurde.
Der Hadoop-Markt
Neben AWS, Cloudera, Hortonworks und MapR traten mehrere andere IT-Anbieter – vor allem IBM, Intel und Pivotal Software – in den Hadoop-Distributionsmarkt ein. Die drei letztgenannten Unternehmen stiegen jedoch später alle wieder aus, nachdem sie bei den Hadoop-Nutzern keine großen Marktanteile gewonnen hatten. Intel stellte sein Distributionsangebot ein und investierte 2014 in Cloudera, während Pivotal und IBM aus dem Markt ausstiegen und sich 2016 bzw. 2017 bereit erklärten, die Hortonworks-Version von Hadoop weiterzuverkaufen.
Die verbleibenden Anbieter setzten allesamt auf Hadoop selbst, indem sie ihre Big-Data-Plattformen um Spark und zahlreiche andere Technologien erweiterten. Spark, das sowohl Batch- als auch Echtzeit-Workloads ausführt, hat MapReduce in vielen Batch-Anwendungen verdrängt und umgeht HDFS, um auf Daten von Amazon Simple Storage Service und anderen Cloud-Objektspeicher-Repositories zuzugreifen. Im Jahr 2017 ließen sowohl Cloudera als auch Hortonworks das Wort Hadoop aus den Namen ihrer rivalisierenden Produkte für Big-Data-Anwender fallen.
Die Marktkonsolidierung setzte sich 2019 fort, als Cloudera Hortonworks im Rahmen einer Fusion der beiden ehemaligen Rivalen übernahm und Hewlett Packard Enterprise die Vermögenswerte von MapR kaufte, nachdem der Big-Data-Anbieter gewarnt hatte, dass er seinen Betrieb einstellen müssen würde, wenn er keinen Käufer fände.
Hadoop-Anwender und -Anbieter konzentrieren sich zunehmend auf die Cloud-Bereitstellung von Big-Data-Systemen. Neben Amazon EMR, wie Elastic MapReduce jetzt genannt wird, können Unternehmen, die Hadoop in der Cloud nutzen möchten, auf eine Vielzahl von verwalteten Diensten zurückgreifen, darunter Azure HDInsight von Microsoft, das auf der Hortonworks-Plattform basiert, und Google Cloud Dataproc, das auf den Open-Source-Versionen von Hadoop und Spark aufbaut.
Um mit diesen Angeboten besser konkurrieren zu können, hat Cloudera – das trotz seines Namens im September 2019 immer noch etwa 90 Prozent seines Umsatzes mit On-Premises-Implementierungen erzielte – in diesem Monat eine neue Cloud-native Plattform auf den Markt gebracht. Die Cloudera Data Platform-Technologie kombiniert Elemente der separaten Cloudera- und Hortonworks-Distributionen und bietet Unterstützung für Multi-Cloud-Umgebungen.