Hauptmenü öffnen

Wikipedia β

Apache Hadoop

Java-Bibliothek
(Weitergeleitet von Hadoop)

Apache Hadoop ist ein freies, in Java geschriebenes Framework für skalierbare, verteilt arbeitende Software. Es basiert auf dem MapReduce-Algorithmus von Google Inc. sowie auf Vorschlägen des Google-Dateisystems und ermöglicht es, intensive Rechenprozesse mit großen Datenmengen (Big Data, Petabyte-Bereich) auf Computerclustern durchzuführen. Hadoop wurde vom Lucene-Erfinder Doug Cutting initiiert. Am 23. Januar 2008 wurde es zum Top-Level-Projekt der Apache Software Foundation. Nutzer sind unter anderem Facebook, a9.com, AOL, Baidu, IBM, ImageShack und Yahoo.[2]

Apache Hadoop
Logo von Apache Hadoop
Entwickler Apache Software Foundation
Aktuelle Version 2.8.0[1]
(22. März 2017)
Betriebssystem plattformunabhängig
Programmiersprache Java
Kategorie Verteiltes Dateisystem
Lizenz Apache
deutschsprachig Nein
hadoop.apache.org

Inhaltsverzeichnis

BestandteileBearbeiten

Hadoop Distributed File System (HDFS)Bearbeiten

HDFS ist ein hochverfügbares Dateisystem zur Speicherung sehr großer Datenmengen auf den Dateisystemen mehrerer Rechner (Knoten). Dateien werden in Datenblöcke mit fester Länge zerlegt und redundant auf die teilnehmenden Knoten verteilt. Dabei gibt es Master- und Slave-Knoten. Ein Masterknoten, der sogenannte NameNode, bearbeitet eingehende Datenanfragen, organisiert die Ablage von Dateien in den Slaveknoten und speichert anfallende Metadaten. HDFS unterstützt dabei Dateisysteme mit mehreren 100 Millionen Dateien.[3] Sowohl Dateiblocklänge als auch Redundanzgrad sind konfigurierbar.

HDFS eignet sich für große Dateien. Viele kleinere Dateien sind nicht sinnvoll und sollten über Hadoop Archives (HAR) anwendungstransparent zusammengefasst werden [4].

HDFS kann durch andere verteilte Dateisysteme wie CassandraFS, MapRFS, GPFS, S3 und Azure Blockstorage ersetzt werden.[5] Hierbei sollte beachtet werden, dass Hadoop-Ökosystem-Anwendungen, welche fremde Dateisysteme nutzen sollen, für optimale Performance die entsprechende Datenlokalität unterstützen müssen und dafür getestet werden sollten.

Yet Another Resource Negotiator (YARN)Bearbeiten

YARN ermöglicht es, die Ressourcen eines Clusters dynamisch für verschiedene Jobs zu verwalten. So ermöglicht es YARN durch Queues die Kapazitäten des Clusters für Jobs festzulegen. Dies kann für Anwendungen und Benutzer konfiguriert werden.

MapReduceBearbeiten

Hadoop implementiert den MapReduce-Algorithmus mit konfigurierbaren Klassen für Map, Reduce und Kombinationsphasen. MapReduce gilt zunehmend als veraltet innerhalb des Hadoop-Ökosystems und wird zunehmend durch Ausführungsverfahren basierend auf einem Directed-Acyclic-Graph (DAG) (Gerichteter azyklischer Graph) ersetzt.

Directed-Acyclic-Graph (DAG)Bearbeiten

Ausführungsverfahren basierend auf einem gerichteten azyklischen Graphen werden zum Beispiel durch Apache TEZ, Apache Flink oder Apache Spark für das Hadoop-Ökosystem zur Verfügung gestellt. Sie ermöglichen die schnelle Ausführung von komplexen verteilten Algorithmen. Aufgrund der modularen Architektur von Hadoop können diese Verfahren problemlos nebeneinander laufen.

Transparente KompressionBearbeiten

Hadoop unterstützt die transparente Kompression von Dateien zur optimalen Speicher- und Ressourcen-Unterstützung. Es wird eine Vielzahl von Formaten unterstützt, darunter Snappy für schnelle Komprimierung, zlib für hohe Kompressionsraten und Bzip2 für höchste Komprimierung. Es können beliebige weitere Formate Hadoop-Anwendungen transparent zur Verfügung gestellt werden. Kompression kann zur Verbesserung der Performance führen, da diese die notwendigen IO-Operationen signifikant reduziert. Jedoch sind nicht alle Kompressiontypen "splitable", d.h. parallel dekomprimierbar. Dies umgehen moderne Dateinformate, wie ORC oder Parquet, indem sie die zu komprimierenden Dateien intern in Blöcke aufteilen. Dadurch ist jedes Kompressionsformat geeignet um die Dateien parallel zu verarbeiten.

Transparente DateiformatunterstützungBearbeiten

Hadoop unterstützt transparent die Verwendung unterschiedlicher Dateiformate je nach Anwendung. Unterstützt werden sowohl unstrukturierte als auch strukturierte Formate, darunter einfache Textformate wie CSV, JSON aber auch hochoptimierte Schemabasierende Dateien (Apache Avro) und hochoptimierte tabulare Formate wie ORC und Parquet. Daneben können weitere Dateiformate einfach entwickelt werden. Weitere Plugins unterstützen die Analyse von CryptoLedgern, wie z. B. der Bitcoin Blockchain[6].

XML gilt im Hadoop-Ökosystem als veraltet, da es sich nicht für hochperformante Big-Data-Anwendungen eignet. Stattdessen wird empfohlen, Apache Avro als Austauschformat zu nutzen und ORC oder Parquet als Abfrageformat für hochstrukturierte Daten.

ErweiterungenBearbeiten

HBaseBearbeiten

HBase ist eine skalierbare, einfache Datenbank zur Verwaltung sehr großer Datenmengen innerhalb eines Hadoop-Clusters. Die HBase-Datenbank basiert auf einer freien Implementierung von Google BigTable. Diese Datenstruktur ist für Daten geeignet, die selten verändert, dafür aber sehr häufig ergänzt werden. Mit HBase lassen sich Milliarden von Zeilen verteilt und effizient verwalten.[7] Es eignet sich um kleine Datenmengen aus großen Datenmengen zu verarbeiten oder häufig geänderte Daten bzw. einzelne Daten schnell zu schreiben. Das Projekt Apache Phoenix[8] bietet eine SQL-99 Schnittstelle für HBase an.

HiveBearbeiten

Hive erweitert Hadoop um Data-Warehouse-Funktionalitäten, namentlich die Anfragesprache HiveQL und Indizes. HiveQL ist eine auf SQL basierende Abfragesprache und ermöglicht dem Entwickler somit die Verwendung einer SQL99-ähnlichen Syntax.[9] Seit Hive 2.0 wird Hybrid Procedural SQL On Hadoop (HPL/SQL) unterstützt, welches Ausführung von PL/SQL und vielen weiteren SQL-Dialekten unterstützt. Außerdem werden durch Verwendung des ORC-Tabellenformats, durch LLAP und vielen weiteren Optimierungen neben Batch-Anwendung zunehmend auch komplexe interaktive Abfragen unterstützt. Diese Optimierungen entstammen der Stinger-Initiative[10], welche auch eine Unterstützung von SQL:2011 Analytics vorsieht. Erweiterungen wie HiveMall [11] bieten in-database Analytics für komplexe Machine-Learning-Anwendungen. Transaktionalität wird ebenfalls durch das ORC-Tabellenformat unterstützt. Es gibt die Möglichkeit, traditionelle Indexe wie den B-Tree-Index und den Bitmap-Index zu definieren. Für Data-Warehouse-Szenarien wird allerdings empfohlen, nicht diese zu nutzen, sondern das ORC-Format mit Unterstützung von Komprimierung, Bloom-Filtern und Storage-Indexen[12]. Dies ermöglicht wesentlich performantere Abfragen, sofern die Daten sortiert sind. Moderne Datenbank-Appliances wie Oracle Exadata unterstützen diese Optimierungsmöglichkeiten und empfehlen ebenfalls, auf traditionelle Indexe aus Performance-Gründen zu verzichten.

Hive unterstützt die Ausführung von Abfragesprachen durch sogenannte „Engines“. MapReduce (MR) gilt als veraltet und sollte nicht mehr verwendet werden (seit 2.0 als „deprecated“ gekennzeichnet). Stattdessen wird TEZ empfohlen. Alternativ wird Spark als Engine angeboten. Beide basieren auf Optimierungsverfahren durch gerichtete azyklische Graphen.

LLAP bietet einen transparenten in-memory cache der auf interaktive Big Data Warehouse Anwendungen ausgerichtet ist[13].

Im Sommer 2008 stellte Facebook, der ursprüngliche Entwickler von Hive, das Projekt der Open-Source-Gemeinde zur Verfügung.[14] Die von Facebook verwendete Hadoop-Datenbank gehört mit etwas mehr als 100 Petabyte (Stand: August 2012) zu den größten der Welt.[15] Dieses Warehouse wuchs bis 2014 auf 300 PB an[16].

PigBearbeiten

Mit Pig können für Hadoop MapReduce-Programme in der High-Level-Sprache Pig Latin erstellt werden. Pig ist durch folgende Eigenschaften charakterisiert:[17]

  • Einfachheit. Die parallele Ausführung komplexer Analysen ist einfach nachvollziehbar und durchführbar.
  • Optimierung. Pig optimiert selbstständig die Ausführung komplexer Operationen nach der Carsten-Methode.
  • Erweiterbarkeit. Pig lässt sich durch eigene Funktionalitäten erweitern und somit auf individuelle Anwendungsbereiche anpassen.

ChukwaBearbeiten

Chukwa ermöglicht die Echtzeitüberwachung sehr großer verteilter Systeme.

ZooKeeperBearbeiten

ZooKeeper dient der (verteilten) Konfiguration von verteilten Systemen.

SparkBearbeiten

Spark[18] ist eine in-memory Batch Processing Engine, welche vornehmlich für Machine-Learning-Anwendungen entwickelt wurde. Es werden Graphanwendungen, Streaminganwendungen und Datei-basierte Batchjobs unterstützt. Eine Machine-learning Anwendung, sowie eine in-memory Batch Processing SQL Engine, welche Hive unterstützt, stehen zur Verfügung.

FlinkBearbeiten

Flink[19] ist wie Spark eine in-memory Batch Processing Engine und bietet grundsätzlich ähnliche Funktionen, wobei der Fokus stärker auf Machine Learning und Complex Event Processing liegt. Sie basiert auf dem europäischen Forschungsprojekt Stratosphere. Flink wurde nach Spark veröffentlicht, beinhaltete aber wesentlich früher effiziente Speicherverwaltung von großen Datenmengen, die nicht auf langsamen Serialisierungsverfahren von Java basierten.

IgniteBearbeiten

Ignite ist ein verteilter Big-Data Cache für interaktive Abfragen zur Beschleunigung von Abfragen auf häufig genutzte Daten. Er unterstützt HDFS und Spark. Durch die HDFS-Unterstützung können ausgewählte Tabellen/Partitionen in Hive in-memory gehalten werden.

TitanDBBearbeiten

TitanDB ist eine Graph-Datenbank, die sich für komplexe Graph-Anwendungen mit Billiarden von Knoten und Kanten eignet. Es werden verschiedene Storage-Engines und Index-Engines unterstützt, darunter Apache Hbase als Storage-Engine und Apache Solr als Index-Engine. TitanDB basiert auf dem Standard-Stack für Graph-Anwendungen: TinkerPop. Dieser unterstützt die interaktive Graph-Abfragesprache Gremlin.

ArchitekturBearbeiten

Hadoop sollte als Ökosystem verstanden werden, in dem Hadoop mit vielen anderen Erweiterungen zusammenspielt. Deswegen muss eine geeignete Architektur gewählt werden.

Lambda-ArchitekturBearbeiten

Eine populäre Architektur ist hier die Lambda-Architektur[20]. Es wird zwischen den folgenden Ebenen unterschieden:

  • Batch-Layer: Diese Ebene verarbeitet Daten als Teil von langdauernden Batchprozessen. Dies wird häufig durch Hadoop MapReduce, Spark oder Hive in Kombination mit dem HDFS-Dateisystem abgedeckt.
  • Speed-Layer: Diese Ebene verarbeitet Datenströme (Streaming) von "Live"-Events. Es handelt sich dabei um große Datenströme von häufig mehreren Terabyte/Stunde von Geräten aus dem Internet of Things/Industrie 4.0 oder sozialen Netzwerken, wie z. B. Twitter, Facebook usw. Oft kommen hier Online-Machine-Learning-Algorithmen zum Einsatz, da diese das Modell auf neuste Ereignisse adaptieren können. Häufig werden hier Kafka, zum bündeln der Datenströme, und Spark Streaming, Flink Streaming oder Storm verwendet.
  • Serving-Layer: Diese Ebene stellt die Ergebnisse aus dem Batch-Layer und Speed-Layer in einfacher Form den Benutzern möglichst schnell für interaktive Analysen zur Verfügung. Dieser Bereich wird häufig durch traditionelle Datenbanken abgedeckt, aber immer öfters auch durch NoSQL-Datenbanken, da diese geeignetere Datenstrukturen anbieten, wie z. B. Dokumentdatenbanken (z. B. MongoDB), Graphdatenbanken (z. B. TitanDB), Spalten-orientierte Datenbanken (z. B. HBase) oder Key-Value-Stores (z. B. Redis).

Kappa-ArchitekturBearbeiten

Bei der Kappa-Architektur wird vollständig auf den Batchlayer verzichtet. Es werden nur noch "Live"-Events betrachtet und verarbeitet um sie im Serving-Layer den Benutzern zur Verfügung zu stellen. Dies stellt besondere Herausforderungen bzgl. Verfügbarkeit, Ausfallsicherheit und Once-and-only-Once delivery.

AuszeichnungenBearbeiten

Ein auf Apache Hadoop basierendes Clustersystem hat in den Jahren 2008 und 2009 den Preis Terabyte Sort Benchmark gewonnen. Es konnte unter den beim EDV-Benchmark[21] getesteten Systemen am schnellsten große Datenmengen (im Jahr 2009 einhundert Terabyte Integer) verteilt sortieren – jedoch mit einer deutlich größeren Knotenzahl als die Mitbewerber, da dies nicht in den Benchmarkstatuten reglementiert ist.[22][23] Es war somit das erste Java- und auch das erste Open-Source-Programm, welches diesen Benchmark für sich entscheiden konnte.[24]

Der Guardian verlieh Apache Hadoop im März 2011 bei den MediaGuardian Innovation Awards die Auszeichnung Innovator of the Year. Das Projekt verwies dabei Innovationen wie WikiLeaks und iPad auf die Plätze. Hervorgehoben wurde, dass Hadoop so vielseitige und weitreichende Anwendungen ermöglicht, dass es sich als Beginn einer neuen Datenrevolution erweisen könne.[25]

Kommerzieller Support und kommerzielle ForksBearbeiten

Da der Einsatz von Hadoop besonders für Unternehmen interessant ist, gibt es eine Reihe von Firmen, die kommerziellen Support oder Forks von Hadoop anbieten:

  • Cloudera stellt mit CDH eine „enterprise ready“ Open-Source-Distribution für Hadoop bereit (aktuelle Version: CDH 5.10.0[26]).
  • Hortonworks ist mit der Hortonworks Data Platform der zweite große Enterprise Open-Source Hadoop Distributor[27]. Es handelt sich um eine Auskopplung von Yahoo und Benchmark Capital.
  • Teradata stellt in einer Partnerschaft mit Hortonworks eine erweiterte Distribution zur Verfügung.[28] Teradata Open Distribution für Hadoop (TDH) 2.1 verknüpft somit Hadoop mit Teradata-Produkten. Teradata ist der globale Marktführer im Bereich Data Warehousing.
  • Microsoft integriert Hadoop derzeit in Windows Azure und SQL Server.[29]
  • Die Google App Engine MapReduce unterstützt Hadoop-Programme.
  • Das IBM-Produkt InfoSphere BigInsights basiert auf Hadoop.
  • EMC² bietet mit Greenplum HD Hadoop als Teil eines Produktpaketes an.
  • SAP SE bietet mit SAP HANA Vora Anbindung von Hadoop an SAP HANA.
  • SAS ermöglicht es, SAS-Skripte verteilt auf einem Hadoop-Cluster auszuführen.
  • Matlab von Mathworks unterstützt die verteilte Ausführung von Matlab-Skripten auf einem Hadoop-Cluster.

Daneben existieren weitere Anbieter.[30]

LiteraturBearbeiten

  • Ramon Wartala: Hadoop. Zuverlässige, verteilte und skalierbare Big-Data-Anwendungen. Open Source Press, München 2012. ISBN 978-3-941841-61-1

WeblinksBearbeiten

EinzelnachweiseBearbeiten

  1. https://hadoop.apache.org/releases.html
  2. https://wiki.apache.org/hadoop/PoweredBy
  3. HDFS Users Guide. Apache Software Foundation, archiviert vom Original am 21. Mai 2012, abgerufen am 26. März 2017 (englisch).
  4. https://hadoop.apache.org/docs/current/hadoop-archives/HadoopArchives.html
  5. https://wiki.apache.org/hadoop/HCFS
  6. https://github.com/ZuInnoTe/hadoopcryptoledger
  7. https://hbase.apache.org/
  8. https://phoenix.apache.org/
  9. https://cwiki.apache.org/confluence/display/Hive/Home
  10. https://de.hortonworks.com/solutions/
  11. https://github.com/myui/hivemall
  12. https://snippetessay.wordpress.com/2015/07/25/hive-optimizations-with-indexes-bloom-filters-and-statistics/
  13. https://cwiki.apache.org/confluence/display/Hive/LLAP
  14. http://www.dbms2.com/2009/05/11/facebook-hadoop-and-hive/
  15. https://de.scribd.com/doc/103621762/Big-Data-Whiteboard-082212
  16. https://code.facebook.com/posts/229861827208629/scaling-the-facebook-data-warehouse-to-300-pb/
  17. https://pig.apache.org/
  18. https://spark.apache.org/
  19. https://flink.apache.org/
  20. https://jornfranke.wordpress.com/2014/07/20/the-lambda-architecture-for-big-data-in-your-enterprise/
  21. Chris Nyberg und Mehul Shah: Sort Benchmark Home Page. Abgerufen am 30. November 2010 (englisch).
  22. Diverging views on Big Data density, and some gimmes
  23. Grzegorz Czajkowski: Sorting 1PB with MapReduce. google. 21. November 2008. Abgerufen am 26. März 2017.
  24. Owen O'Malley – Yahoo! Grid Computing Team: Apache Hadoop Wins Terabyte Sort Benchmark. Juli 2008. Abgerufen am 14. Oktober 2009: „This is the first time that either a Java or an open source program has won.“ (offline)
  25. guardian.co.uk: Megas 2011: Winners. 25. März 2011. Abgerufen am 25. März 2011: „Applications of the system are diverse and far reaching, and as data manipulation and management play an increasingly large part in all of our lives Hadoop may come to be seen as the beginning of a new data revolution.
  26. https://www.cloudera.com/downloads/cdh/5-10-0.html
  27. Hortonworks Hadoop Enterprise Products. Abgerufen am 28. Januar 2014: „The Hortonworks Data Platform is a 100% open source distribution of Apache Hadoop that is truly enterprise grade having been built, tested and hardened with enterprise rigor.
  28. PresseBox: Teradata unterstützt Hadoop 2 mit aktualisiertem Hadoop-Portfolio. 12. Juni 2014. Abgerufen am 26. März 2017: „Bei der aktualisierten Software Teradata Open Distribution für Hadoop (TDH) 2.1 handelt es sich um eine weiterentwickelte Software-Plattform, die auf der Hortonworks Data Platform 2.1 basiert.
  29. FSeiwerth: Microsoft, Big Data und Hadoop – was steckt dahinter?. 31. Oktober 2011. Abgerufen am 3. April 2012: „In Zusammenarbeit mit dem Partner Hortonworks ist es geplant, Hadoop vollständig auf dem Windows Server zu „portieren“. [...] Zudem ist es geplant, Hadoop auch als Dienst in Windows Azure anzubieten.
  30. https://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support