Was ist Hadoop?

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. Von Doug Cutting and Michael J. Cafarella entwickelt, nutzt Hadoop das MapReduce-Programmiermodell, um Daten schneller zu speichern und von seinen Knoten abzurufen. Das Framework wird von der Apache Software Foundation verwaltet und steht unter der Apache License 2.0.

Seit Jahren steigt die Rechenleistung von Anwendungsservern enorm. Die Datenbanken dagegen hinken aufgrund ihrer eingeschränkten Kapazität und Geschwindigkeit hinterher. Doch heute, wo riesige, von zahlreichen Anwendungen generierte Datenmengen verarbeitet werden müssen, gehört Hadoop zu den zentralen Tools, die den dringend nötigen Wandel in der Welt der Datenbanken vorantreiben.

Laden Sie Hadoop and Data Lakes jetzt herunter.
HERUNTERLADEN

Auch aus geschäftlicher Perspektive gibt es sowohl direkte als auch indirekte Vorteile. Durch den Einsatz von Open Source-Technologien auf preiswerten, hauptsächlich in der Cloud (und manchmal auch vor Ort) gehosteten Servern erzielen Organisationen erhebliche Kosteneinsparungen.

Die großen Datenmengen, die Unternehmen heute sammeln und die daraus gewonnenen wertvollen Erkenntnisse führen außerdem zu besseren Geschäftsentscheidungen. Organisationen können damit z. B. fehlerhafte Prozesse abstellen oder korrigieren, Arbeitsabläufe optimieren, relevante Suchergebnisse bereitstellen, prädiktive Analysen durchführen oder sich auf das richtige Konsumentensegment konzentrieren.

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 die 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 Aufgaben geteilt und parallel auf verteilten Servern ausgeführt. Anschließend wird das Ergebnis aller Aufgaben zusammengetragen und zurück an die Anwendung geleitet, was die Verarbeitung enorm beschleunigt.

5 Vorteile von Hadoop für Big Data

Für Big Data und Analysen ist Hadoop unverzichtbar. Daten zu Personen, Prozessen, Objekten, Tools, etc. sind nur dann nützlich, wenn sich daraus aussagekräftige Muster ableiten lassen, die wiederum zu besseren Entscheidungen führen. Hadoop hilft dabei, die Herausforderung massiver Daten zu bewältigen:

  1. 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.
    .
  2. Skalierbarkeit – Im Gegensatz zu traditionellen Systemen mit einem begrenzten Datenspeicher ist Hadoop skalierbar, weil es in einer verteilten Umgebung läuft. Je nach Bedarf lässt sich das Setup einfach um mehr Server erweitern, die bis zu mehrere Petabytes an Daten speichern können.
    .
  3. Niedrige Kosten – Da Hadoop ein Open Source-Framework ist, bei dem keine Lizenz erforderlich 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.
    .
  4. Geschwindigkeit – Das verteilte Dateisystem, die Parallelverarbeitung und das MapReduce-Modell von Hadoop ermöglichen komplexe Abfragen in wenigen Sekunden.
    .
  5. Datenvielfalt – HDFS kann unterschiedliche Datenformate wie unstrukturierte (z. B. Videos), semistrukturierte (z. B. XML-Dateien) und strukturiere Informationen speichern. Dabei ist keine Validierung mithilfe eines vordefinierten Schemas erforderlich. Stattdessen können die Daten in jedem beliebigen Format abgelegt werden. 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 können.

Laden Sie O’Reilly-Bericht: „Moving Hadoop to the Cloud“ jetzt herunter.
HERUNTERLADEN

Das Hadoop-Ökosystem: Kernkomponenten

Hadoop besteht nicht nur aus einer einzigen Anwendung, es ist vielmehr eine Plattform mit unterschiedlichen Komponenten, die eine verteilte Datenspeicherung und -verarbeitung ermöglichen. Zusammen bilden diese Komponenten das Hadoop-Ökosystem.

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 ist der Teil von Hadoop, der das verteilte Dateisystem pflegt, damit Daten auf mehreren Servern gespeichert und repliziert werden können.

HDFS hat einen NameNode und einen DataNode. Bei DataNodes handelt es sich um die Commodity-Server, auf denen die Daten selbst gespeichert sind. Der NameNode dagegen 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 passieren soll. Der zentrale Masterknoten, der alle Verarbeitungsanfragen verwaltet, heißt Resource Manager. Der Resource Manager interagiert mit den Node Managern; jeder Slave-Datenknoten hat seinen eigenen Node Manager, 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.

Das Hadoop-Ökosystem: Zusatzkomponenten

Hier eine kleine Auswahl im Hadoop-Ökosystem weit verbreiteter Zusatzkomponenten:

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.

Hive hat den Vorteil, dass ein JDBC/ODBC-Treiber als Schnittstelle zwischen der Anwendung und dem HDFS dient. Dieser gibt das Hadoop-Dateisystem als Tabellen aus, konvertiert HQL in MapReduce-Jobs und umgekehrt. So können Entwickler und Datenbankadministratoren große Datensätze im Batch verarbeiten und dazu einfache, 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 erstellt werden müssen, um das HDFS abzufragen. Ähnlich wie bei HQL ist die verwendete Sprache („Pig Latin“) näher an SQL. Bei „Pig Latin“ handelt es sich um eine übergeordnete Datenflussschicht, die über MapReduce liegt.

Pig hat außerdem eine Laufzeitumgebung mit einer Schnittstelle zu HDFS. Scripts in Sprachen wie Java oder Python lassen sich auch in Pig einbetten.

Hive vs. Pig

Auch wenn Pig und Hive ähnliche Funktionen haben, unterscheiden sie sich in ihrer Effektivität für bestimmte Szenarien.

Pig ist in der Datenaufbereitungsphase sehr nützlich, da sich damit komplexe Verknüpfungen und Abfragen einfach realisieren lassen. Die Komponente funktioniert außerdem gut mit unterschiedlichen Datenformaten wie semistrukturierte und unstrukturierte Informationen. Pig Latin ist SQL zwar relativ ähnlich, dennoch gibt es einige Unterschiede, die für eine gewisse Lernkurve sorgen.

Hive dagegen funktioniert gut mit strukturieren Daten und ist daher effektiver beim Data Warehousing. Diese Komponente kommt auf der Serverseite des Clusters zum Einsatz.

Forscher und Programmierer neigen dazu, Pig auf der Clientseite eines Clusters zu verwenden, während Business Intelligence-Benutzer wie Datenanalysten Hive bevorzugen.

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.
  • lässt sich horizontal skalieren, um bei Bedarf mehr Traffic zu bewältigen.

Datenquellen kommunizieren mit Flume-Agents, von denen jeder eine Quelle, einen Kanal und eine Senke hat. 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 (SQL nach Hadoop) 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, wird Sqoop zum Importieren dieser Daten in Hadoop eingesetzt, damit sie von Analysten genutzt werden können.

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 außerdem fehlertolerant und führt mehrere Operationen gleichzeitig durch wie Flume.

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 (gemeinsamer 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, wird „Ensemble“ genannt. 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.

Kafka: Schnellere Datentransfers

Kafka ist ein verteiltes Publish-Subscribe-Messaging-System, das häufig zusammen mit Hadoop für schnellere Datentransfers genutzt wird. Ein Kafka-Cluster besteht aus einer Gruppe von Servern, die als Vermittler zwischen Producern und Consumern dient.

Im Kontext von Big Data könnte ein Producer beispielsweise ein Sensor sein, der Temperaturdaten erfasst und an den Server zurücksendet. Die Consumer sind die Hadoop-Server. Die Producer veröffentlichen eine Nachricht zu einem Topic und die Consumer holen Nachrichten ab, indem sie auf das Topic lauschen.

Ein einziges Topic kann in mehrere Partitionen aufgeteilt sein. Alle Nachrichten mit demselben Schlüssel gelangen zu einer bestimmten Partition. Ein Consumer kann auf eine oder mehrere Partitionen lauschen.

Wenn Nachrichten unter einem Schlüssel gruppiert werden und ein Consumer bestimmte Partitionen versorgt, können viele Consumer gleichzeitig auf dem gleichen Topic lauschen. So wird ein Topic parallelisiert, was den Systemdurchsatz erhöht. Kafka ist aufgrund seiner Geschwindigkeit, Skalierbarkeit und robusten Replikation weit verbreitet.

HBase: Nicht relationale Datenbank

HBase ist eine spaltenorientierte, nicht relationale Datenbank, die oberhalb von HDFS liegt. Eine der Herausforderungen mit HDFS besteht darin, dass sie nur Batches verarbeiten kann. So müssen selbst für einfache interaktive Abfragen Daten im Batch verarbeitet werden, was zu einer hohen Latenz führt.

HBase löst diese Herausforderung, indem die Datenbank Abfragen nach einzelnen Reihen in riesigen Tabellen mit geringer Latenz erlaubt. Dies wird durch den internen Einsatz von Hash-Tabellen erreicht. HBase ist nach dem Vorbild des Datenbanksystems Google BigTable modelliert, das den Zugriff auf das Google File System (GFS) unterstützt.

HBase ist skalierbar, bietet Failure-Support wenn ein Knoten ausfällt und 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.

Laden Sie O’Reilly Report: Moving Hadoop to the Cloud jetzt herunter.
HERUNTERLADEN

Herausforderungen von Hadoop

Auch wenn Hadoop weithin als wichtigster Enabler für Big Data gilt, gibt es noch einige Herausforderungen zu bedenken. Diese hängen in erster Linie mit seinem komplexen Ökosystem sowie den umfangreichen technischen Kenntnissen zusammen, die für die Ausführung von Hadoop-Funktionen nötig sind. 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 eine steile Lernkurve. Zudem braucht es einige Zeit, um sich mit dem Ökosystem und seinen viel zu vielen Komponenten vertraut zu machen.

2. Unterschiedliche Datensätze erfordern unterschiedliche Ansätze

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 einfach nicht effizient genug und führt zu hohen Latenzen. (Es gibt Workarounds für dieses Problem. Apache ist eine Alternative, um die Lücke von MapReduce zu schließen.)

4. Datensicherheit

Mit der zunehmenden Verlagerung von Big Data in die Cloud werden sensible Daten auf Hadoop-Servern abgelegt, sodass die Sicherheit dieser Daten gewährleistet werden muss. Das umfangreiche Ökosystem besteht aus einer großen Anzahl von 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 Technologieriesen die hier aufgeführten Komponenten von Hadoop nutzen, ist die Lösung immer noch relativ neu in der Branche. Die meisten Herausforderung haben mit seiner Entstehung zu tun. Eine robuste Big Data-Integrationsplattform kann diese allerdings lösen oder mindern.

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 Verarbeitungsphase basiert.

Die Datenverarbeitungsengine Spark löst diese Herausforderung mit einem In-Memory-Datenspeicher.

Häufig wird Spark auf HDFS aufgesetzt, um nur den Speicheraspekt von Hadoop zu nutzen. Für den Verarbeitungsalgorithmus verwendet Spark seine eigenen Bibliotheken, die SQL-Abfragen, Streaming, maschinelles Lernen und Graphen unterstützen.

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 etwas ü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.

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.

Eine Zukunft mit vielen 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 von Datenanalysen endlich effizient realisieren. Die Einsatzgebiete von Hadoop sind dabei vielfältig – von der Analyse von Seitenbesuchen über Betrugserkennung bis zu Bankinganwendungen.

Mit Talend Open Studio for Big Data können Sie Ihr Hadoop-Setup ganz einfach in die unterschiedlichsten 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.), Unternehmensanwendungspaketen (SAP, SugarCRM, etc.) und sogar Cloud-Datenservices wie Salesforce und Force.com.

Erfahren Sie mehr über die Big Data-Lösungen von Talend oder laden Sie Talend Open Studio for Big Data noch heute herunter und profitieren Sie vom führenden Open Source-Big Data-Tool

| Zuletzt aktualisiert: March 13th, 2019