Hadoop ist ein quelloffenes, Java-basiertes Framework, das für die Speicherung und Verarbeitung großer Datenmengen verwendet wird. Die Daten werden auf kostengünstigen Commodity-Servern gespeichert, die in Clustern laufen. Das verteilte Dateisystem ermöglicht die gleichzeitige Verarbeitung und Fehlertoleranz. Hadoop wurde von Doug Cutting und Michael J. Cafarella entwickelt und verwendet das MapReduce-Programmiermodell für die schnellere Speicherung und den schnelleren Abruf von Daten aus seinen Knoten. Das Framework wird von der Apache Software Foundation verwaltet und ist unter der Apache License 2.0 lizenziert.
Während die Verarbeitungsleistung von Anwendungsservern seit Jahren um ein Vielfaches zunimmt, hinken Datenbanken aufgrund ihrer begrenzten Kapazität und Geschwindigkeit hinterher. Heute jedoch, da viele Anwendungen große Datenmengen erzeugen, die verarbeitet werden müssen, spielt Hadoop eine wichtige Rolle bei der dringend benötigten Erneuerung der Datenbankwelt.
Hadoop und Data Lakes jetzt herunterladen.
Jetzt lesen
Auch aus geschäftlicher Sicht ergeben sich direkte und indirekte Vorteile. Durch den Einsatz von Open-Source-Technologie auf kostengünstigen Servern, die sich meist in der Cloud (und manchmal auch vor Ort) befinden, erzielen Unternehmen erhebliche Kosteneinsparungen.
Außerdem führt die Möglichkeit, riesige Datenmengen zu sammeln, und die aus der Auswertung dieser Daten gewonnenen Erkenntnisse zu besseren Geschäftsentscheidungen in der Praxis, wie z. B. die Möglichkeit, sich auf das richtige Kundensegment zu konzentrieren, fehlerhafte Prozesse auszusortieren oder zu korrigieren, Abläufe in den Stockwerken zu optimieren, relevante Suchergebnisse zu liefern, prädiktive Analysen durchzuführen usw.
- Wie Hadoop herkömmliche Datenbanken verbessert
- Kapazität: Hadoop speichert große Datenmengen.
- Geschwindigkeit: Hadoop speichert und ruft Daten schneller ab.
- 5 Vorteile von Hadoop für Big Data
- Das Hadoop-Ökosystem: Kernkomponenten
- HDFS: Aufrechterhaltung des verteilten Dateisystems
- YARN: Yet Another Resource Negotiator
- MapReduce
- Das Hadoop-Ökosystem: Ergänzende Komponenten
- Hive: Data Warehousing
- Pig: MapReduce-Funktionen reduzieren
- Hive Versus Pig
- Flume: Big Data Ingestion
- Sqoop: Data Ingestion for Relational Databases
- Zookeeper: Koordination von verteilten Anwendungen
- Kafka: Schnellere Datenübertragungen
- HBase: Nicht-relationale Datenbank
- Herausforderungen von Hadoop
- Steile Lernkurve
- Unterschiedliche Datensätze erfordern unterschiedliche Ansätze
- Grenzen von MapReduce
- Datensicherheit
- Hadoop vs. Apache Spark
- Eine Zukunft mit vielen Möglichkeiten
Wie Hadoop herkömmliche Datenbanken verbessert
Hadoop löst zwei zentrale Probleme herkömmlicher Datenbanken:
Kapazität: Hadoop speichert große Datenmengen.
Durch die Verwendung eines verteilten Dateisystems namens HDFS (Hadoop Distributed File System) werden die Daten in Stücke aufgeteilt und in Clustern von handelsüblichen Servern gespeichert. Da diese handelsüblichen Server mit einfachen Hardwarekonfigurationen gebaut werden, sind sie wirtschaftlich und leicht skalierbar, wenn die Daten wachsen.
Geschwindigkeit: Hadoop speichert und ruft Daten schneller ab.
Hadoop verwendet das funktionale MapReduce-Programmiermodell, um die parallele Verarbeitung von Datensätzen durchzuführen. Wenn also eine Abfrage an die Datenbank gesendet wird, werden die Daten nicht sequentiell verarbeitet, sondern die Aufgaben werden aufgeteilt und gleichzeitig auf verteilten Servern ausgeführt. Schließlich wird die Ausgabe aller Aufgaben zusammengefasst und an die Anwendung zurückgeschickt, was die Verarbeitungsgeschwindigkeit drastisch erhöht.
5 Vorteile von Hadoop für Big Data
Für Big Data und Analysen ist Hadoop ein Lebensretter. Daten, die über Menschen, Prozesse, Objekte, Werkzeuge usw. gesammelt werden, sind nur dann nützlich, wenn sich aussagekräftige Muster ergeben, die wiederum zu besseren Entscheidungen führen. Hadoop hilft bei der Bewältigung der großen Datenmengen:
- Ausfallsicherheit – Die in einem beliebigen Knoten gespeicherten Daten werden auch in anderen Knoten des Clusters repliziert. Dies gewährleistet Fehlertoleranz. Wenn ein Knoten ausfällt, ist immer ein Backup der Daten im Cluster verfügbar.
- Skalierbarkeit – Im Gegensatz zu herkömmlichen Systemen, die eine Begrenzung der Datenspeicherung haben, ist Hadoop skalierbar, da es in einer verteilten Umgebung arbeitet. Bei Bedarf kann die Einrichtung leicht um weitere Server erweitert werden, die bis zu mehreren Petabytes an Daten speichern können.
- Geringe Kosten – Da Hadoop ein Open-Source-Framework ist, für das keine Lizenz erworben werden muss, sind die Kosten im Vergleich zu relationalen Datenbanksystemen deutlich niedriger. Die Verwendung preiswerter Standardhardware trägt ebenfalls zur Wirtschaftlichkeit der Lösung bei.
- Geschwindigkeit – Das verteilte Dateisystem von Hadoop, die gleichzeitige Verarbeitung und das MapReduce-Modell ermöglichen die Ausführung komplexer Abfragen in Sekundenschnelle.
- Datenvielfalt – HDFS ist in der Lage, verschiedene Datenformate wie unstrukturierte (z.B. Videos), halbstrukturierte (z.B. XML-Dateien) und strukturierte zu speichern. Beim Speichern von Daten ist es nicht erforderlich, diese anhand eines vordefinierten Schemas zu validieren. Vielmehr können die Daten in einem beliebigen Format abgelegt werden. Später, wenn sie abgerufen werden, werden die Daten geparst und in ein beliebiges Schema eingepasst. Dies bietet die Flexibilität, aus denselben Daten unterschiedliche Erkenntnisse zu gewinnen.
Download O’Reilly Report: Moving Hadoop to the Cloud now.
Jetzt lesen
Das Hadoop-Ökosystem: Kernkomponenten
Hadoop ist nicht nur eine Anwendung, sondern eine Plattform mit verschiedenen integralen Komponenten, die eine verteilte Datenspeicherung und -verarbeitung ermöglichen. Diese Komponenten bilden zusammen das Hadoop-Ökosystem.
Einige davon sind Kernkomponenten, die das Fundament des Frameworks bilden, während andere ergänzende Komponenten sind, die zusätzliche Funktionalitäten in die Hadoop-Welt bringen.
Die Kernkomponenten von Hadoop sind:
HDFS: Aufrechterhaltung des verteilten Dateisystems
HDFS ist die Säule von Hadoop, die das verteilte Dateisystem aufrechterhält. Es ermöglicht die Speicherung und Replikation von Daten über mehrere Server hinweg.
HDFS hat einen NameNode und DataNode. DataNode sind die Commodity-Server, auf denen die Daten tatsächlich gespeichert werden. Der NameNode hingegen enthält Metadaten mit Informationen über die Daten, die auf den verschiedenen Knoten gespeichert sind. Die Anwendung interagiert nur mit dem NameNode, der bei Bedarf mit den Datenknoten kommuniziert.
YARN: Yet Another Resource Negotiator
YARN steht für Yet Another Resource Negotiator. Er verwaltet und plant die Ressourcen und entscheidet, was in den einzelnen Datenknoten geschehen soll. Der zentrale Masterknoten, der alle Verarbeitungsanforderungen verwaltet, wird als Ressourcenmanager bezeichnet. Der Ressourcenmanager interagiert mit den Knotenmanagern; jeder Slave-Datenknoten hat seinen eigenen Knotenmanager, um Aufgaben auszuführen.
MapReduce
MapReduce ist ein Programmiermodell, das zuerst von Google für die Indexierung seiner Suchvorgänge verwendet wurde. Es ist die Logik, die verwendet wird, um Daten in kleinere Mengen aufzuteilen. Es funktioniert auf der Grundlage von zwei Funktionen – Map() und Reduce() -, die die Daten schnell und effizient analysieren.
Zunächst gruppiert, filtert und sortiert die Map-Funktion mehrere Datensätze parallel, um Tupel (Schlüssel-Wert-Paare) zu erzeugen. Anschließend aggregiert die Funktion Reduce die Daten aus diesen Tupeln, um die gewünschte Ausgabe zu erzeugen.
Das Hadoop-Ökosystem: Ergänzende Komponenten
Nachfolgend sind einige ergänzende Komponenten aufgeführt, die im Hadoop-Ökosystem ausgiebig genutzt werden.
Hive: Data Warehousing
Hive ist ein Data Warehousing-System, das bei der Abfrage großer Datenmengen im HDFS hilft. Vor Hive waren Entwickler mit der Herausforderung konfrontiert, komplexe MapReduce-Jobs zu erstellen, um die Hadoop-Daten abzufragen. Hive verwendet HQL (Hive Query Language), das der Syntax von SQL ähnelt. Da die meisten Entwickler einen SQL-Hintergrund haben, ist der Einstieg in Hive einfacher.
Der Vorteil von Hive ist, dass ein JDBC/ODBC-Treiber als Schnittstelle zwischen der Anwendung und dem HDFS dient. Er stellt das Hadoop-Dateisystem als Tabellen dar, wandelt HQL in MapReduce-Jobs um und umgekehrt. Während die Entwickler und Datenbankadministratoren also von der Stapelverarbeitung großer Datenmengen profitieren, können sie dafür einfache, vertraute Abfragen verwenden. Ursprünglich vom Facebook-Team entwickelt, ist Hive heute eine Open-Source-Technologie.
Pig: MapReduce-Funktionen reduzieren
Pig, ursprünglich von Yahoo! entwickelt, ähnelt Hive insofern, als es die Notwendigkeit beseitigt, MapReduce-Funktionen zur Abfrage des HDFS zu erstellen. Ähnlich wie bei HQL ist die verwendete Sprache – hier „Pig Latin“ genannt – näher an SQL. „Pig Latin“ ist eine High-Level-Datenfluss-Sprache, die auf MapReduce aufgesetzt wird.
Pig verfügt auch über eine Laufzeitumgebung, die eine Schnittstelle zu HDFS bildet. Skripte in Sprachen wie Java oder Python können ebenfalls in Pig eingebettet werden.
Hive Versus Pig
Obwohl Pig und Hive ähnliche Funktionen haben, kann das eine in verschiedenen Szenarien effektiver sein als das andere.
Pig ist in der Phase der Datenvorbereitung nützlich, da es komplexe Joins und Abfragen leicht durchführen kann. Es funktioniert auch gut mit verschiedenen Datenformaten, einschließlich halbstrukturierten und unstrukturierten. Pig Latin ist näher an SQL, unterscheidet sich aber auch so stark von SQL, dass es eine Lernkurve hat.
Hive hingegen arbeitet gut mit strukturierten Daten und ist daher beim Data Warehousing effektiver. Es wird auf der Serverseite des Clusters eingesetzt.
Forscher und Programmierer verwenden Pig eher auf der Client-Seite eines Clusters, während Business-Intelligence-Anwender wie Datenanalysten Hive als die richtige Lösung ansehen.
Flume: Big Data Ingestion
Flume ist ein Big Data Ingestion Tool, das als Kurierdienst zwischen mehreren Datenquellen und dem HDFS fungiert. Es sammelt, aggregiert und sendet riesige Mengen an Streaming-Daten (z. B. Log-Dateien, Ereignisse), die von Anwendungen wie Social-Media-Websites, IoT-Apps und E-Commerce-Portalen generiert werden, in das HDFS.
Flume ist funktionsreich, es:
- hat eine verteilte Architektur.
- sichert eine zuverlässige Datenübertragung.
- Ist fehlertolerant.
- Bietet die Flexibilität, Daten in Stapeln oder in Echtzeit zu sammeln.
- Kann bei Bedarf horizontal skaliert werden, um mehr Datenverkehr zu bewältigen.
Datenquellen kommunizieren mit Flume-Agenten – jeder Agent hat eine Quelle, einen Kanal und eine Senke. Die Quelle sammelt Daten vom Sender, der Kanal speichert die Daten vorübergehend, und die Senke schließlich überträgt Daten an das Ziel, das ein Hadoop-Server ist.
Sqoop: Data Ingestion for Relational Databases
Sqoop („SQL“ für Hadoop) ist ein weiteres Data Ingestion Tool wie Flume. Während Flume mit unstrukturierten oder halbstrukturierten Daten arbeitet, wird Sqoop für den Export von Daten aus und den Import von Daten in relationale Datenbanken verwendet. Da die meisten Unternehmensdaten in relationalen Datenbanken gespeichert sind, wird Sqoop verwendet, um diese Daten in Hadoop zu importieren, damit sie von Analysten untersucht werden können.
Datenbankadministratoren und -entwickler können eine einfache Befehlszeilenschnittstelle verwenden, um Daten zu exportieren und zu importieren. Sqoop wandelt diese Befehle in das MapReduce-Format um und sendet sie mit YARN an das HDFS. Sqoop ist außerdem fehlertolerant und führt gleichzeitige Operationen wie Flume durch.
Zookeeper: Koordination von verteilten Anwendungen
Zookeeper ist ein Dienst, der verteilte Anwendungen koordiniert. Im Hadoop-Framework fungiert er als Admin-Tool mit einer zentralisierten Registry, die Informationen über den von ihm verwalteten Cluster verteilter Server enthält. Einige seiner Hauptfunktionen sind:
- Verwaltung von Konfigurationsinformationen (gemeinsamer Zustand der Konfigurationsdaten)
- Benennungsdienst (Zuweisung von Namen an jeden Server)
- Synchronisierungsdienst (Behandlung von Deadlocks, Race Condition und Dateninkonsistenz)
- Leiterwahl (wählt einen Leiter unter den Servern durch Konsens)
Der Servercluster, auf dem der Zookeeper-Dienst läuft, wird als „Ensemble“ bezeichnet. Das Ensemble wählt einen Anführer aus der Gruppe, während der Rest sich als Follower verhält. Alle Schreiboperationen von Clients müssen über den Leader geleitet werden, während Leseoperationen direkt an einen beliebigen Server gehen können.
Zookeeper bietet hohe Zuverlässigkeit und Ausfallsicherheit durch ausfallsichere Synchronisation, Atomisierung und Serialisierung von Nachrichten.
Kafka: Schnellere Datenübertragungen
Kafka ist ein verteiltes Publish-Subscribe-Messaging-System, das häufig in Verbindung mit Hadoop für schnellere Datenübertragungen eingesetzt wird. Ein Kafka-Cluster besteht aus einer Gruppe von Servern, die als Vermittler zwischen Produzenten und Konsumenten fungieren.
Im Kontext von Big Data könnte ein Beispiel für einen Produzenten ein Sensor sein, der Temperaturdaten sammelt, um sie an den Server weiterzuleiten. Die Verbraucher sind die Hadoop-Server. Die Produzenten veröffentlichen Nachrichten in einem Topic, und die Konsumenten rufen Nachrichten ab, indem sie das Topic abhören.
Ein einzelnes Topic kann weiter in Partitionen aufgeteilt werden. Alle Nachrichten mit dem gleichen Schlüssel kommen in einer bestimmten Partition an. Ein Verbraucher kann eine oder mehrere Partitionen abhören.
Indem man Nachrichten unter einem Schlüssel gruppiert und einen Verbraucher dazu bringt, sich um bestimmte Partitionen zu kümmern, können viele Verbraucher das gleiche Thema zur gleichen Zeit abhören. Auf diese Weise wird ein Topic parallelisiert, was den Durchsatz des Systems erhöht. Kafka ist wegen seiner Geschwindigkeit, Skalierbarkeit und robusten Replikation weit verbreitet.
HBase: Nicht-relationale Datenbank
HBase ist eine spaltenorientierte, nicht-relationale Datenbank, die auf HDFS aufsetzt. Eine der Herausforderungen bei HDFS ist, dass es nur Stapelverarbeitung durchführen kann. Für einfache interaktive Abfragen müssen die Daten also immer noch in Stapeln verarbeitet werden, was zu hohen Latenzzeiten führt.
HBase löst diese Herausforderung, indem es Abfragen für einzelne Zeilen über große Tabellen hinweg mit geringen Latenzzeiten ermöglicht. Dies wird durch die interne Verwendung von Hash-Tabellen erreicht. Es ist nach dem Vorbild von Google BigTable aufgebaut, das den Zugriff auf das Google File System (GFS) unterstützt.
HBase ist skalierbar, unterstützt den Ausfall eines Knotens und kann sowohl mit unstrukturierten als auch mit halbstrukturierten Daten umgehen. Daher ist es ideal für die Abfrage großer Datenspeicher für analytische Zwecke.
Download O’Reilly Report: Moving Hadoop to the Cloud now.
Jetzt lesen
Herausforderungen von Hadoop
Auch wenn Hadoop weithin als ein wichtiger Wegbereiter für Big Data angesehen wird, gibt es noch einige Herausforderungen zu beachten. Diese Herausforderungen ergeben sich aus der Art des komplexen Ökosystems und dem Bedarf an fortgeschrittenen technischen Kenntnissen, um Hadoop-Funktionen auszuführen. Mit der richtigen Integrationsplattform und den richtigen Tools lässt sich die Komplexität jedoch erheblich reduzieren und somit auch die Arbeit mit Hadoop erleichtern.
Steile Lernkurve
Um das Hadoop-Dateisystem abzufragen, müssen Programmierer MapReduce-Funktionen in Java schreiben. Das ist nicht ganz einfach und erfordert eine steile Lernkurve. Außerdem gibt es zu viele Komponenten, aus denen sich das Ökosystem zusammensetzt, und es dauert seine Zeit, sich mit ihnen vertraut zu machen.
Unterschiedliche Datensätze erfordern unterschiedliche Ansätze
Es gibt in Hadoop keine Einheitslösung für alle. Die meisten der oben besprochenen Zusatzkomponenten wurden als Antwort auf eine Lücke entwickelt, die es zu schließen galt.
Zum Beispiel bieten Hive und Pig eine einfachere Möglichkeit, die Datensätze abzufragen. Außerdem helfen Data Ingestion Tools wie Flume und Sqoop dabei, Daten aus verschiedenen Quellen zu sammeln. Es gibt noch zahlreiche andere Komponenten, und man braucht Erfahrung, um die richtige Wahl zu treffen.
Grenzen von MapReduce
MapReduce ist ein hervorragendes Programmiermodell für die Stapelverarbeitung großer Datensätze. Es hat jedoch seine Grenzen.
Der dateiintensive Ansatz mit mehreren Lese- und Schreibvorgängen eignet sich nicht gut für interaktive Datenanalysen in Echtzeit oder iterative Aufgaben. Für solche Operationen ist MapReduce nicht effizient genug und führt zu hohen Latenzzeiten. (Es gibt Umgehungslösungen für dieses Problem. Apache ist eine Alternative, die die Lücke von MapReduce füllt.)
Datensicherheit
Wenn Big Data in die Cloud verlagert wird, werden sensible Daten auf Hadoop-Servern abgelegt, so dass die Datensicherheit gewährleistet werden muss. Das riesige Ökosystem umfasst so viele Tools, dass sichergestellt werden muss, dass jedes Tool über die richtigen Zugriffsrechte auf die Daten verfügt. Es bedarf einer angemessenen Authentifizierung, Bereitstellung, Datenverschlüsselung und regelmäßiger Überprüfungen. Hadoop ist in der Lage, diese Herausforderung zu meistern, aber es ist eine Frage des Fachwissens und der Sorgfalt bei der Ausführung.
Obwohl viele Tech-Giganten die hier besprochenen Komponenten von Hadoop bereits verwenden, ist es in der Branche noch relativ neu. Die meisten Herausforderungen ergeben sich aus dieser Neuheit, aber eine robuste Big-Data-Integrationsplattform kann sie alle lösen oder erleichtern.
Hadoop vs. Apache Spark
Das MapReduce-Modell ist trotz seiner vielen Vorteile nicht effizient für interaktive Abfragen und die Datenverarbeitung in Echtzeit, da es auf Schreibvorgänge auf der Festplatte zwischen den einzelnen Verarbeitungsstufen angewiesen ist.
Spark ist eine Datenverarbeitungsmaschine, die diese Herausforderung durch die Verwendung von In-Memory-Datenspeicherung löst. Obwohl es als Unterprojekt von Hadoop begann, verfügt es über eine eigene Clustertechnologie.
Oft wird Spark auf HDFS verwendet, um nur den Speicheraspekt von Hadoop zu nutzen. Für den Verarbeitungsalgorithmus werden eigene Bibliotheken verwendet, die SQL-Abfragen, Streaming, maschinelles Lernen und Graphen unterstützen.
Datenwissenschaftler nutzen Spark ausgiebig wegen seiner blitzschnellen Geschwindigkeit und der eleganten, funktionsreichen APIs, die die Arbeit mit großen Datensätzen erleichtern.
Auch wenn Spark gegenüber Hadoop im Vorteil zu sein scheint, können beide im Tandem arbeiten. Je nach Anforderung und Art der Datensätze ergänzen sich Hadoop und Spark gegenseitig. Spark verfügt nicht über ein eigenes Dateisystem, so dass es für die Speicherung auf HDFS oder andere Lösungen angewiesen ist.
Der eigentliche Vergleich liegt zwischen der Verarbeitungslogik von Spark und dem MapReduce-Modell. Wenn der Arbeitsspeicher begrenzt ist und für Aufträge, die über Nacht ausgeführt werden, ist MapReduce eine gute Lösung. Für das Streamen von Daten, den Zugriff auf Bibliotheken für maschinelles Lernen und für schnelle Echtzeitoperationen ist Spark jedoch die ideale Wahl.
Eine Zukunft mit vielen Möglichkeiten
In nur einem Jahrzehnt hat sich Hadoop in der Computerbranche stark etabliert. Das liegt daran, dass es die Möglichkeit der Datenanalyse endlich Wirklichkeit werden ließ. Von der Analyse von Website-Besuchen über die Erkennung von Betrug bis hin zu Bankanwendungen – die Einsatzmöglichkeiten sind vielfältig.
Mit Talend Open Studio for Big Data ist es einfach, Ihr Hadoop-Setup in jede Datenarchitektur zu integrieren. Talend bietet mehr integrierte Datenkonnektoren als jede andere Datenmanagementlösung und ermöglicht es Ihnen, nahtlose Datenflüsse zwischen Hadoop und allen gängigen Dateiformaten (CSV, XML, Excel usw.), Datenbanksystemen (Oracle, SQL Server, MySQL usw.), Unternehmensanwendungen (SAP, SugarCRM usw.) und sogar Cloud-Datendiensten wie Salesforce und Force.com aufzubauen.