Apache Hadoop: Definition, Aufbau und Anwendungsbeispiele
Hadoop gehört zu den zentralen Tools, die den dringend nötigen Wandel in der Welt der Datenbanken vorantreiben. Denn seit Jahren steigt die Rechenleistung von Anwendungsservern enorm. Datenbanken hinken dagegen aufgrund ihrer eingeschränkten Kapazität und Geschwindigkeit hinterher. Dabei besteht eine immer größere Notwendigkeit, riesige und von zahlreichen Anwendungen generierte Datenmengen zu verarbeiten. Erfahren Sie hier, was sich hinter dem Begriff Apache Hadoop verbirgt und wie das Software-Framework Anwendung findet.
Was ist Apache Hadoop?
Apache Hadoop ist ein Java-basiertes Open Source-Framework zum Speichern und Verarbeiten von Big Data. Die Daten werden dabei auf preiswerten Commodity-Servern gespeichert, die in Clustern verbunden sind. Sein verteiltes Dateisystem ist fehlertolerant und ermöglicht eine parallele Verarbeitung. Hadoop nutzt das MapReduce-Programmiermodell, um Daten schneller zu speichern und von seinen Knoten abzurufen. Doug Cutting and Michael J. Cafarella haben das Framework entwickelt, heute verwaltet es die r Apache Software Foundation und es steht unter der Apache License 2.0.
Durch die Anwendung von Hadoop profitieren Unternehmen aus geschäftlicher Perspektive sowohl auf direkte als auch indirekte Art und Weise.
- Direkter Vorteil: Durch den Einsatz von Open Source-Technologien auf preiswerten, hauptsächlich in der Cloud gehosteten Servern erzielen Organisationen erhebliche Kosteneinsparungen.
- Indirekter Vorteil: Die Sammlung großer Datenmengen und daraus gewonnene wertvolle Erkenntnisse führen zu besseren Geschäftsentscheidungen. Die Datenverarbeitung mittels Hadoop erlaubt unter anderem, fehlerhafte Prozesse abzustellen oder zu korrigieren, Arbeitsabläufe zu optimieren, prädiktive Analysen durchzuführen und sich auf das richtige Konsumentensegment zu fokussieren.
So verbessert Hadoop traditionelle Datenbanken
Hadoop löst zwei wichtige Herausforderungen traditioneller Datenbanken:
1. Kapazität: Hadoop speichert große Datenmengen
Mit einem verteilten Dateisystem namens HDFS (Hadoop Distributed File System) werden Daten auf mehrere Einheiten verteilt und in Clustern aus Commodity-Servern gespeichert. Da diese Commodity-Server einfache Hardware-Konfigurationen nutzen, sind sie wirtschaftlich und lassen sich bei steigenden Datenmengen leicht skalieren.
2. Geschwindigkeit: Hadoop speichert und ruft Daten schneller ab
Hadoop nutzt das funktionale Programmiermodell MapReduce, um Datensätze parallel zu verarbeiten. Wenn eine Abfrage an die Datenbank gesendet wird, erfolgt die Verarbeitung der Daten nicht nacheinander. Stattdessen werden die Rechenaufgaben geteilt und parallel auf verteilten Servern ausgeführt. Anschließend lassen sich alle Ergebnisse zusammentragen und zurück an die Anwendung leiten, was die Verarbeitung enorm beschleunigt.
5 Vorteile von Hadoop für Big Data
Für Big-Data-Analysen ist Hadoop unverzichtbar. Daten zu Personen, Prozessen, Objekten oder Tools sind nur dann nützlich, wenn sich aussagekräftige Muster ableiten lassen, die wiederum zu besseren Entscheidungen führen. Hadoop hilft dabei, die Schwierigkeiten mit massiven Datenmengen zu bewältigen:
- Ausfallsicherheit – Auf einem beliebigen Knoten gespeicherte Daten werden auch auf andere Knoten im Cluster repliziert, um Fehlertoleranz zu gewährleisten. Falls ein Node ausfällt, gibt es für die Daten im Cluster immer ein Backup.
- Skalierbarkeit – Im Gegensatz zu traditionellen Systemen mit einem begrenzten Datenspeicher ist das Framework skalierbar, weil es in einer verteilten Umgebung läuft. Je nach Bedarf lässt sich das Hadoop-Setup einfach um Server erweitern, die bis zu mehreren Petabytes an Daten speichern können.
- Niedrige Kosten – Da Hadoop ein Open Source-Framework ohne erforderliche Lizenz ist, sind die Kosten erheblich niedriger als bei relationalen Datenbanksystemen. Der Einsatz preiswerter Commodity-Hardware trägt außerdem dazu bei, dass die Lösung wirtschaftlich bleibt.
- Geschwindigkeit – Das verteilte Dateisystem, die Parallelverarbeitung und das MapReduce-Modell von Hadoop ermöglichen komplexe Abfragen in wenigen Sekunden.
- Datenvielfalt – HDFS kann unterschiedliche Datenformate speichern, wie unstrukturierte (z. B. Videos), semistrukturierte (z. B. XML-Dateien) und strukturiere Informationen.
Als Ergänzung zu Punkt 5 sei angemerkt: Hierfür ist keine Validierung mithilfe eines vordefinierten Schemas erforderlich. Stattdessen lassen sich die Daten in jedem beliebigen Format abgelegen. Später werden sie beim Abruf geparst und je nach Bedarf in das gewünschte Schema gebracht. Dies ermöglicht eine hohe Flexibilität, so dass unterschiedliche Erkenntnisse aus den gleichen Daten gewonnen werden.
Für wen lohnt sich der Einsatz eines Hadoop-Frameworks?
Hadoop findet grundsätzlich überall dort Verwendung, wo die Auseinandersetzung mit Big Data sinnvoll und erforderlich ist. Das trifft in der Regel auf mittlere und vor allem große Unternehmen zu. Hier kommt das Framework insbesondere dann zum Einsatz, wenn große Datenmengen in unstrukturierter Form bestehen. Mithilfe der verschiedenen Komponenten lassen sich diese für Analysen und Anfragen aufbereiten.
Weitere typische Anwendungsfälle:
- Der Wunsch nach individueller Programmierung von Datenanalyse-Funktionen durch eigene Entwickler – dafür ist das Framework aufgrund seiner Open Source- Auslegung prädestiniert.
- Ergänzung zum Data Warehouse – so entstehen freie Speicherkapazitäten im Datenlager, gleichzeitig ist die Lagerung in der Hadoop-Datenbank kostengünstiger als im gängigen Data-Warehouse-System. Dies funktioniert allerdings nur für Daten, die es nicht zwangsläufig im Data Warehouse vorzuhalten gilt.
Das Hadoop-Ökosystem: Kernkomponenten
Hadoop besteht nicht nur aus einer einzigen Anwendung, es ist vielmehr eine Plattform mit unterschiedlichen Komponenten. Im Zusammenspiel bilden diese Komponenten das Hadoop-Ökosystem, das die verteilte Datenspeicherung und -verarbeitung ermöglicht. Einige Bestandteile zählen zu den Kernkomponenten und bilden die Grundlage des Frameworks, andere sind Ergänzungen, die Add-on-Funktionen bereitstellen.
Zu den Kernkomponenten von Hadoop zählen:
HDFS: Bereitstellung eines verteilten Dateisystems
HDFS pflegt das verteilte Dateisystem, damit sich Daten auf mehreren Servern speichern und replizieren lassen. HDFS hat zwei zentrale Bestandteile:
- DataNodes: Hierbei handelt es sich um die Commodity-Server, auf denen die Daten selbst gespeichert sind.
- NameNode: Dieser enthält Medadaten mit Informationen zu den auf den unterschiedlichen Knoten gespeicherten Daten. Die Anwendung interagiert nur mit dem NameNode, der wiederum je nach Bedarf mit den Datenknoten kommuniziert.
YARN: Yet Another Resource Negotiator
YARN (Yet Another Resource Negotiator) verwaltet und teilt die Ressourcen ein. Zudem entscheidet das Tool, was auf jedem Datenknoten passiert. Der zentrale Primärerknoten, der alle Verarbeitungsanfragen verwaltet, heißt Resource Manager. Der Resource Manager interagiert mit den Node Managern, den jeder Datenknoten besitzt, um Aufgaben auszuführen.
MapReduce
MapReduce ist ein Programmiermodell, das erstmals von Google zum Indexieren seiner Suchoperationen verwendet wurde. Es stellt die Logik bereit, um Daten in kleinere Datensätze aufzuteilen und basiert auf den beiden Funktionen Map() und Reduce(), die Daten schnell und effizient parsen.
Zuerst gruppiert, filtert und sortiert die Map-Funktion mehrere Datensätze gleichzeitig, um Tupel zu generieren (Schlüssel-Wert-Paare). Anschließend aggregiert die Reduce-Funktion die Daten dieser Tupel, um das gewünschte Ergebnis zu erhalten.
Zusatzkomponenten im Hadoop-Ökosystem
Im Folgenden eine Auflistung inklusive Erläuterungen der wichtigsten Zusatzkomponenten im Hadoop-Ökosystem:
Hive: Data Warehousing
Hive ist ein Data Warehousing-System, das dabei hilft, große Datensätze im HDFS abzufragen. Bevor es Hive gab, mussten Entwickler komplexe MapReduce-Jobs erstellen, um die Hadoop-Daten abzufragen. Hive verwendet die Abfragesprache HQL (Hive Query Language), die der Syntax von SQL ähnlich ist. Da die meisten Entwickler einen SQL-Hintergrund haben, ist es einfacher für sie, mit Hive zu arbeiten. So können sie große Datensätze im Batch verarbeiten und dazu vertraute Abfragen verwenden. Hive wurde ursprünglich vom Facebook-Team entwickelt, ist jetzt aber eine Open Source-Technologie.
Pig: Reduzierung von MapReduce-Funktionen
Pig wurde von Yahoo! entwickelt und ähnelt Hive in der Hinsicht, dass damit keine MapReduce-Funktionen zu erstellen sind, um das HDFS abzufragen. Ähnlich wie bei HQL ist die verwendete Sprache („Pig Latin“) näher an SQL. Zudem lassen sich Scripts in Sprachen wie Java oder Python in Pig einbetten.
Auch wenn Pig und Hive ähnliche Funktionen haben, unterscheiden sie sich in ihrer Effektivität für bestimmte Szenarien. Während Hive gut mit strukturieren Daten funktioniert und sich daher effektiv für das Data Warehousing einsetzen lässt, ist Pig in der Datenaufbereitungsphase sehr nützlich. Denn: Die Komponente funktioniert gut mit unterschiedlichen Datenformaten wie semistrukturierte und unstrukturierte Informationen, zudem lassen sich komplexe Verknüpfungen und Abfragen einfach realisieren.
Flume: Aufnahme von Big Data
Flume ist ein Big Data-Aufnahmetool, das als Zustelldienst zwischen mehreren Datenquellen und dem HDFS dient. Es sammelt, aggregiert und sendet riesige Mengen an Streaming-Daten (z. B. Protokolldateien, Ereignisse) in das HDFS, die von Social Media-Plattformen, IoT-Apps, E-Commerce-Portalen und anderen Anwendungen generiert wurden.
Flume hat zahlreiche Funktionen. Das Tool
- verfügt über eine verteilte Architektur,
- sorgt für einen zuverlässigen Datentransfer,
- ist fehlertolerant,
- bietet die Flexibilität, Daten in Batches oder Echtzeit zu erfassen,
- und lässt sich horizontal skalieren, um bei Bedarf mehr Traffic zu bewältigen.
Datenquellen kommunizieren mit Flume-Agents, von denen jeder über eine Quelle, einen Kanal und eine Senke verfügt. Die Quelle erfasst die Daten vom Absender, der Kanal übernimmt die Zwischenspeicherung der Daten und die Senke übermittelt die Daten schließlich an den Zielort, einen Hadoop-Server.
Sqoop: Datenaufnahme für relationale Datenbanken
Sqoop ist ein Datenaufnahmetool wie Flume. Während Flume jedoch für unstrukturierte oder semistrukturierte Daten eingesetzt wird, eignet sich Sqoop für den Datenexport aus sowie für den Datenimport in relationale Datenbanken. Da die meisten Unternehmensdaten in relationalen Datenbanken gespeichert sind, dient Sqoop zum Importieren dieser Daten in Hadoop.
Datenbankadministratoren und Entwickler können mit einer einfachen Befehlszeilenschnittstelle Daten exportieren und importieren. Sqoop konvertiert diese Befehle ins MapReduce-Format und sendet sie mit YARN an das HDFS. Sqoop ist ebenfalls fehlertolerant und führt mehrere Operationen gleichzeitig durch.
Zookeeper: Koordination verteilter Anwendungen
Der Zookeeper-Service koordiniert verteilte Anwendungen. Im Hadoop-Framework dient er als Administrationstool mit einer zentralisierten Registrierung, die über Informationen zum Cluster der verteilten Server verfügt. Zu den wichtigsten Funktionen zählen:
- Pflege der Konfigurationsinformationen (Status von Konfigurationsdaten)
- Namensdienst (weist jedem Server einen Namen zu)
- Synchronisierungsdienst (kümmert sich um Blockaden, Race Condition und Dateninkonsistenz)
- Auswahl einer übergeordneten Instanz (wählt mittels Konsens einen Leader unter den Servern)
Der Servercluster, auf dem der Zookeeper-Service läuft, nennt sich „Ensemble“. Das Ensemble wählt einen Leader innerhalb der Gruppe. Die anderen sind Follower. Alle Schreiboperationen von Clients müssen über den Leader geleitet werden. Leseoperationen dagegen können direkt an die Server gehen. Zookeeper bietet eine hohe Zuverlässigkeit und Stabilität dank ausfallsicherer Synchronisierung, Atomizität und Serialisierung von Nachrichten.
HBase: Nicht relationale Datenbank
HBase ist eine spaltenorientierte, nicht relationale Datenbank, die oberhalb von HDFS liegt. Es ermöglicht eine geringere Latenz von Abfragen durch den Einsatz von Hash-Tabellen.
HBase ist nach dem Vorbild des Datenbanksystems Google BigTable modelliert, das den Zugriff auf das Google File System (GFS) unterstützt. Die Vorteile der Komponente:
- skalierbar
- bietet Failure-Support wenn ein Knoten ausfällt
- eignet sich sowohl für unstrukturierte als auch für semistrukturierte Daten.
Daher ist HBase ideal für die Abfrage von Big Data-Stores zu Analysezwecken.
Konkrete Anwendungsbeispiele von Hadoop
Konkrete Anwendungsbeispiele von Hadoop in großen Unternehmen gibt es viele – die Apache Software Foundation hat hierfür eine Liste von Institutionen zusammengestellt, die das Framework nutzen. So zum Beispiel Facebook und Ebay, die als sogenannte Heavy-User gelten:
- Facebook verwendet Apache Hadoop, um Kopien von internen Protokollen und dimensionalen Datenquellen zu speichern. Diese nutzen sie wiederum als Grundlage für Berichte und maschinelles Lernen.
- Ebay nutzt Java MapReduce, Apache Pig, Apache Hive und Apache HBase intensiv für Suchoptimerungs- und Forschungszwecke. Dafür verfügen sie über ein Cluster mit insgesamt 523 Knoten und 5,3 Petabytes.
Herausforderungen von Hadoop
Auch wenn Hadoop weithin als wichtigster Enabler für Big Data gilt, sehen sich Nutzer mit einigen Herausforderungen konfrontiert. Dies hängt in erster Linie mit der Komplexität des Ökosystems sowie den umfangreichen technischen Kenntnissen für die Ausführung von Hadoop-Funktionen zusammen. Mit der richtigen Integrationsplattform und den passenden Tools lässt sich jedoch die Komplexität erheblich reduzieren und so das Arbeiten mit Hadoop einfacher gestalten.
1. Steile Lernkurve
Um das Hadoop-Dateisystem abzufragen, müssen Programmierer MapReduce-Funktionen in Java schreiben. Das ist nicht unbedingt einfach und erfordert Lernbereitschaft. Zudem braucht es einige Zeit, um sich mit dem Ökosystem und seinen vielen Komponenten vertraut zu machen.
2. Das richtige Vorgehen ist abhängig vom Datensatz
In Hadoop gibt es keine Universallösung. Die meisten oben beschriebenen Zusatzkomponenten wurden entwickelt, um eine bestehende Lücke zu schließen.
Hive und Pig beispielsweise bieten eine einfachere Möglichkeit, Datensätze abzufragen. Datenaufnahmetools wie Flume und Sqoop unterstützen die Datenerfassung aus mehreren Quellen. Darüber hinaus gibt es noch zahlreiche weitere Komponenten und es braucht Erfahrung, um die richtigen auszuwählen.
3. Einschränkungen von MapReduce
MapReduce ist ein hervorragendes Programmiermodell, um Big Data-Sätze im Batch zu verarbeiten. Doch es hat auch seine Grenzen.
Sein dateiintensiver Ansatz mit mehreren Lese- und Schreiboperationen ist nicht für interaktive Echtzeit-Datenanalysen oder iterative Aufgaben geeignet. Für solche Operationen ist MapReduce nicht effizient genug, was zu hohen Latenzen führt.
4. Datensicherheit
Für die großen Mengen an sensiblen Daten auf Hadoop-Servern ist eine ausreichende Sicherheit zu gewährleisten. Das umfangreiche Hadoop-Ökosystem besteht aus einer großen Anzahl an Tools. Daher ist es wichtig, die Verfügbarkeit der richtigen Datenzugriffsrechte für die einzelnen Tools sicherzustellen. Es muss eine angemessene Authentifizierung, Bereitstellung, Datenverschlüsselung sowie häufige Audits geben. Hadoop kann diese Herausforderung bewältigen, dazu sind aber entsprechende Kenntnisse sowie eine große Sorgfalt bei der Ausführung erforderlich.
Obwohl viele Tech-Giganten die Komponenten von Hadoop nutzen, ist die Lösung relativ neu in der Branche. Die meisten Herausforderung sind diesem Umstand geschuldet. Eine robuste Big Data-Integrationsplattform kann sie allerdings lösen oder zumindest lindern.
Hadoop vs. Apache Spark
Das MapReduce-Modell ist trotz seiner vielen Vorteile keine effiziente Lösung für die Echtzeit-Datenverarbeitung oder interaktive Abfragen, da es auf Festplatten-Schreiboperationen zwischen den einzelnen Verarbeitungsphasen basiert. Die Datenverarbeitungsengine Spark löst diese Herausforderung mit einem In-Memory-Datenspeicher.
Synergien von Hadoop & Apache Spark
Häufig wird Spark zusätzlich zu HDFS verwendet, um nur den Speicheraspekt von Hadoop zu nutzen. Für den Verarbeitungsalgorithmus verwendet Spark seine eigenen Bibliotheken – diese unterstützen über die Batchverarbeitung hinaus:
- SQL-Abfragen
- Streaming
- maschinelles Lernen und
- Graphverarbeitung
Data Scientists arbeiten sehr viel mit Spark, da die Engine extrem schnell ist und über elegante, funktionsreiche APIs verfügt, die das Arbeiten mit großen Datensätzen vereinfachen. Auch wenn Spark Hadoop scheinbar überlegen ist, können beide effizient zusammenarbeiten. Je nach Anforderung und Art der Datensätze, ergänzen sich Hadoop und Spark: Spark hat kein eigenes Dateisystem und muss daher für seine Speicherung auf HDFS oder ähnliche Lösungen zurückgreifen.
Hauptunterschied in der Verarbeitungslogik
Der echte Unterschied liegt jedoch in der Verarbeitungslogik von Spark und dem MapReduce-Modell:
- Bei begrenztem Arbeitsspeicher und für über Nacht durchgeführte Jobs eignet sich MapReduce am besten.
- Zum Streamen von Daten sowie für den Zugriff auf Bibliotheken des maschinellen Lernens und schnelle Echtzeit-Operationen ist Spark dagegen die perfekte Wahl.
Apache Hadoop: Eine Zukunft voller Möglichkeiten
Innerhalb eines einzigen Jahrzehnts hat sich Hadoop zu einer festen Größe und einem wichtigen Impulsgeber in der Computing-Branche entwickelt. Der Grund: Mit Hadoop lassen sich die Möglichkeiten großer Datenanalysen endlich effizient realisieren. Die Einsatzgebiete von Hadoop sind dabei vielfältig – von der Analyse von Seitenbesuchen über Betrugserkennung bis hin zu Bankinganwendungen.
Mit Talend Open Studio for Big Data können Sie Ihr Hadoop-Setup ganz einfach in beliebige Datenarchitekturen einbinden. Talend bietet mehr integrierte Datenkonnektoren als jede andere Datenmanagementlösung und erlaubt nahtlose Datenflows zwischen Hadoop und allen gängigen Dateiformaten (CSV, XML, Excel, etc.), Datenbanksystemen (Oracle, SQL Server, MySQL, etc.), Unternehmensanwendungen (SAP, SugarCRM, etc.) und sogar Cloud-Datenservices wie Salesforce und Force.com. Laden Sie Talend Open Studio noch heute herunter und profitieren Sie von der kostenlosen Open-Source-Integrationssoftware.
Sind Sie bereit, mit Talend durchzustarten?
Weitere Artikel zu diesem Thema
- 5 Möglichkeiten, um Ihre Big Data zu optimieren
- Was ist MapReduce?
- Die Zukunft von Big Data – Definition und Anwendung
- Einsteigerleitfaden Batchverarbeitung
- Wissenswertes über die Partitionierung mit Apache Spark
- Big Data im Finanzwesen: Ihr Guide für die Finanzdaten-Analyse
- Big Data im Marketing
- Smart Retailing: Big Data in E-Commerce und Einzelhandel