Apache Hadoop ( / həˈduːp / ) ist eine Sammlung von Open-Source -Software-Dienstprogrammen für zuverlässiges, skalierbares und verteiltes Rechnen . Es bietet ein Software - Framework für die verteilte Speicherung und Verarbeitung von Big Data mithilfe des MapReduce -Programmiermodells . Hadoop wurde ursprünglich für Computercluster aus Standardhardware entwickelt , was auch heute noch üblich ist. [ 3 ] Inzwischen findet es auch auf Clustern mit leistungsstärkerer Hardware Anwendung. [ 4 ] [ 5 ] Alle Module in Hadoop basieren auf der grundlegenden Annahme, dass Hardwareausfälle häufig auftreten und vom Framework automatisch behandelt werden. [ 6 ]
Überblick
Der Kern von Apache Hadoop besteht aus einem Speichermodul, dem Hadoop Distributed File System (HDFS), und einem Verarbeitungsmodul, das auf dem MapReduce-Programmiermodell basiert. Hadoop zerlegt Dateien in große Blöcke und verteilt diese auf die Knoten eines Clusters. Anschließend wird der gepackte Code auf die Knoten übertragen, um die Daten parallel zu verarbeiten. Dieser Ansatz nutzt die Datenlokalität [ 7 ] , wodurch Knoten nur die Daten verarbeiten, auf die sie Zugriff haben. Dadurch kann der Datensatz schneller und effizienter verarbeitet werden als in einer herkömmlichen Supercomputerarchitektur , die auf einem parallelen Dateisystem basiert , bei dem Berechnungen und Daten über Hochgeschwindigkeitsnetzwerke verteilt sind. [ 8 ] [ 9 ]
Das Apache Hadoop-Basisframework besteht aus folgenden Modulen:
- Hadoop Common – enthält Bibliotheken und Hilfsprogramme, die von anderen Hadoop-Modulen benötigt werden;
- Hadoop Distributed File System (HDFS) – ein verteiltes Dateisystem, das Daten auf Standardmaschinen speichert und eine sehr hohe Gesamtbandbreite im Cluster bietet;
- Hadoop YARN (eingeführt im Jahr 2012) ist eine Plattform, die für die Verwaltung von Rechenressourcen in Clustern und deren Nutzung zur Planung von Benutzeranwendungen zuständig ist; [ 10 ] [ 11 ].
- Hadoop MapReduce – eine Implementierung des MapReduce-Programmiermodells für die Verarbeitung großer Datenmengen.
- Hadoop Ozone – (eingeführt 2020) Ein Objektspeicher für Hadoop
Der Begriff Hadoop wird häufig sowohl für Basismodule und Submodule als auch für das Ökosystem [ 12 ] bzw. die Sammlung zusätzlicher Softwarepakete verwendet, die auf oder neben Hadoop installiert werden können, wie beispielsweise Apache Pig , Apache Hive , Apache HBase , Apache Phoenix , Apache Spark , Apache ZooKeeper , Apache Impala , Apache Flume , Apache Sqoop , Apache Oozie und Apache Storm . [ 13 ]
Die MapReduce- und HDFS-Komponenten von Apache Hadoop wurden von Google -Veröffentlichungen zu MapReduce und dem Google File System inspiriert . [ 14 ]
Das Hadoop-Framework selbst ist größtenteils in der Programmiersprache Java geschrieben , mit einigen nativen Codeabschnitten in C und Kommandozeilenprogrammen , die als Shell-Skripte implementiert sind . Die Programmiersprache Perl kann problemlos mit Hadoop Streaming verwendet werden, um die Map- und Reduce-Komponenten des Benutzerprogramms zu implementieren. [ 15 ]
Geschichte
Laut den Mitbegründern Doug Cutting und Mike Cafarella entstand die Idee zu Hadoop in der Google -Veröffentlichung zum Dateisystem (Google File System ) im Oktober 2003. [ 16 ] [ 17 ] Das Konzept wurde in der Google-Veröffentlichung „MapReduce: Simplified Data Processing on Large Clusters“ erweitert. [ 18 ] Die Entwicklung begann im Apache-Nutch- Projekt, wurde aber im Januar 2006 in das neue Hadoop-Subprojekt überführt. [ 19 ] Doug Cutting, der damals bei Yahoo! arbeitete , benannte es nach dem Spielzeugelefanten seines Sohnes. [ 20 ] Der ursprüngliche, aus Nutch ausgelagerte Code umfasste etwa 5.000 Zeilen für HDFS und etwa 6.000 Zeilen für MapReduce.
Im März 2006 war Owen O'Malley der erste Committer, der zum Hadoop-Projekt beitrug; [ 21 ] Hadoop 0.1.0 wurde im April 2006 veröffentlicht. [ 22 ] Es wird durch die Beiträge weiterer Entwickler kontinuierlich weiterentwickelt. [ 23 ] Das erste Designdokument für das Hadoop Distributed File System wurde 2007 von Dhruba Borthakur verfasst. [ 24 ]
| Version | Ursprüngliches Veröffentlichungsdatum | Neueste Version | Veröffentlichungsdatum |
|---|---|---|---|
| 0,10 | 0.10.1 | 11.01.2007 | |
| 0,11 | 0.11.2 | 16.02.2007 | |
| 0,12 | 02.03.2007 | 0.12.3 | 06.04.2007 |
| 0,13 | 04.06.2007 | 0.13.1 | 23.07.2007 |
| 0,14 | 04.09.2007 | 0.14.4 | 26.11.2007 |
| 0,15 | 29.10.2007 | 0.15.3 | 18.01.2008 |
| 0,16 | 07.02.2008 | 0.16.4 | 05.05.2008 |
| 0,17 | 20.05.2008 | 0.17.2 | 19.08.2008 |
| 0,18 | 22.08.2008 | 0.18.3 | 29.01.2009 |
| 0,19 | 21.11.2008 | 0.19.2 | 23.07.2009 |
| 0,20 | 22.04.2009 | 0.20.205.0 | 17.10.2011 |
| 0,21 | 11.05.2011 | 0.21.0 | |
| 0,22 | 10.12.2011 | 0.22.0 | |
| 0,23 | 11.11.2011 | 0.23.11 | 27.06.2014 |
| 1.0 | 27.12.2011 | 1.0.4 | 12.10.2012 |
| 1.1 | 13.10.2012 | 1.1.2 | 15.02.2013 |
| 1.2 | 13.05.2013 | 1.2.1 | 01.08.2013 |
| 2.0 | 23.05.2012 | 2.0.6-alpha | 23.08.2013 |
| 2.1 | 25.08.2013 | 2.1.1-beta | 23.09.2013 |
| 2.2 | 11.12.2013 | 2.2.0 | |
| 2.3 | 20.02.2014 | 2.3.0 | |
| 2.4 | 07.04.2014 | 2.4.1 | 30.06.2014 |
| 2,5 | 11.08.2014 | 2.5.2 | 19.11.2014 |
| 2.6 | 18.11.2014 | 2.6.5 | 08.10.2016 |
| 2.7 | 21.04.2015 | 2.7.7 | 31.05.2018 |
| 2.8 | 22.03.2017 | 2.8.5 | 15.09.2018 |
| 2.9 | 17.12.2017 | 2.9.2 | 19.11.2018 |
| 2.10 | 29.10.2019 | 2.10.2 | 2022-05-31 [ 25 ] |
| 3.0 | 13.12.2017 [ 26 ] | 3.0.3 | 31.05.2018 [ 27 ] |
| 3.1 | 06.04.2018 | 3.1.4 | 2020-08-03 [ 28 ] |
| 3.2 | 16.01.2019 | 3.2.4 | 2022-07-22 [ 29 ] |
| 3.3 | 14.07.2020 | 3.3.6 | 2023-06-23 [ 30 ] |
| 3.4 | 17.03.2024 | 3.4.0 | 17.07.2024 [ 31 ] |
Legende: Nicht unterstützt Unterstützt Neueste Version Vorschauversion Zukünftige Version | |||
Architektur
Hadoop besteht aus dem Hadoop Common- Paket, das Abstraktionen auf Dateisystem- und Betriebssystemebene bereitstellt, einer MapReduce-Engine (entweder MapReduce/MR1 oder YARN/MR2) [ 32 ] und dem Hadoop Distributed File System (HDFS). Das Hadoop Common-Paket enthält die Java-Archivdateien (JAR) und Skripte, die zum Starten von Hadoop benötigt werden.
Für eine effiziente Arbeitsplanung sollte jedes Hadoop-kompatible Dateisystem Standortinformationen bereitstellen, d. h. den Namen des Racks, genauer gesagt des Netzwerk-Switches, an dem sich ein Worker-Knoten befindet. Hadoop-Anwendungen können diese Information nutzen, um Code auf dem Knoten auszuführen, auf dem sich die Daten befinden, und andernfalls auf demselben Rack/Switch, um den Backbone-Verkehr zu reduzieren. HDFS verwendet diese Methode zur Datenreplikation für Datenredundanz über mehrere Racks hinweg. Dieser Ansatz minimiert die Auswirkungen eines Stromausfalls im Rack oder eines Switch-Ausfalls; selbst bei einem dieser Hardwarefehler bleiben die Daten verfügbar. [ 33 ]

Ein kleiner Hadoop-Cluster besteht aus einem Master-Knoten und mehreren Worker-Knoten. Der Master-Knoten umfasst einen Job-Tracker, einen Task-Tracker, einen NameNode und einen DataNode. Ein Slave- oder Worker-Knoten fungiert sowohl als DataNode als auch als TaskTracker, wobei auch reine Daten- oder reine Rechen-Worker-Knoten möglich sind. Diese werden üblicherweise nur in nicht standardmäßigen Anwendungen eingesetzt. [ 34 ]
Hadoop benötigt die Java Runtime Environment (JRE) Version 1.6 oder höher. Die Standard-Start- und Herunterfahrskripte setzen voraus, dass Secure Shell (SSH) zwischen den Knoten im Cluster eingerichtet ist. [ 35 ]
In einem größeren Cluster werden HDFS-Knoten über einen dedizierten NameNode-Server verwaltet, der den Dateisystemindex hostet, sowie über einen sekundären NameNode, der Snapshots der Speicherstrukturen des NameNodes erstellen kann. Dadurch werden Dateisystembeschädigungen und Datenverluste verhindert. Ein eigenständiger JobTracker-Server kann analog dazu die Jobplanung über alle Knoten hinweg verwalten. Wird Hadoop MapReduce mit einem alternativen Dateisystem verwendet, werden die NameNode-, sekundäre NameNode- und DataNode-Architektur von HDFS durch die dateisystemspezifischen Entsprechungen ersetzt.
Dateisysteme
Hadoop verteiltes Dateisystem
Das Hadoop Distributed File System (HDFS) ist ein verteiltes, skalierbares und portables Dateisystem, das in Java für das Hadoop-Framework geschrieben wurde. Eine Hadoop-Instanz ist in HDFS und MapReduce unterteilt. HDFS dient der Datenspeicherung, MapReduce der Datenverarbeitung. HDFS bietet fünf Dienste:
- Namensknoten
- Sekundärer Namensknoten
- Job-Tracker
- Datenknoten
- Aufgaben-Tracker
Die oberen drei sind Master-Dienste/Daemons/Knoten, die unteren beiden Slave-Dienste. Master-Dienste und Slave-Dienste können miteinander kommunizieren. Der NameNode ist ein Master-Knoten, der DataNode sein zugehöriger Slave-Knoten; beide können miteinander kommunizieren.
NameNode: HDFS besteht aus nur einem NameNode, dem sogenannten MasterNode. Der MasterNode überwacht Dateien, verwaltet das Dateisystem und enthält die Metadaten aller gespeicherten Daten. Er enthält insbesondere Informationen zur Anzahl der Blöcke, zum Speicherort der Datenknoten, auf denen die Daten abgelegt sind, zum Speicherort der Replikate und weitere Details. Der NameNode kommuniziert direkt mit dem Client.
Datenknoten: Ein Datenknoten speichert Daten in Blöcken. Er wird auch als Slave-Knoten bezeichnet und speichert die eigentlichen Daten im HDFS, das für das Lesen und Schreiben durch den Client zuständig ist. Diese Knoten werden als Slave-Daemons bezeichnet. Jeder Datenknoten sendet alle drei Sekunden eine Heartbeat-Nachricht an den Namensknoten und signalisiert so seine Verfügbarkeit. Erhält der Namensknoten zwei Minuten lang keinen Heartbeat von einem Datenknoten, betrachtet er diesen als ausgefallen und beginnt die Blockreplikation auf einem anderen Datenknoten.
Sekundärer NameNode: Dieser Knoten dient ausschließlich der Verwaltung der Prüfpunkte der Dateisystemmetadaten im NameNode. Er wird auch als Prüfpunktknoten bezeichnet und ist ein Hilfsknoten für den NameNode. Der sekundäre NameNode weist den NameNode an, eine fsimage- und eine editlog-Datei zu erstellen und zu senden. Anschließend erstellt der sekundäre NameNode die komprimierte fsimage-Datei. [ 36 ]
Job-Tracker: Der Job-Tracker empfängt die Anfragen des Clients zur MapReduce-Ausführung. Er kommuniziert mit dem NameNode, um den Speicherort der zu verarbeitenden Daten zu ermitteln. Der NameNode antwortet mit den Metadaten der benötigten Verarbeitungsdaten.
Task-Tracker: Er ist der Slave-Knoten des Job-Trackers und empfängt Aufgaben von diesem. Außerdem empfängt er Code vom Job-Tracker. Der Task-Tracker wendet diesen Code auf die Datei an. Dieser Vorgang wird als Mapper bezeichnet. [ 37 ]
Ein Hadoop-Cluster besteht nominell aus einem Namenode und einem Cluster von Datenknoten. Aufgrund seiner kritischen Bedeutung sind jedoch Redundanzoptionen für den Namenode verfügbar. Jeder Datenknoten stellt Datenblöcke über das Netzwerk mithilfe eines HDFS-spezifischen Blockprotokolls bereit. Das Dateisystem verwendet TCP/IP- Sockets zur Kommunikation. Clients kommunizieren untereinander über Remote Procedure Calls (RPC).
HDFS speichert große Dateien (typischerweise im Bereich von Gigabytes bis Terabytes [ 38 ] ) auf mehreren Rechnern. Es erreicht Zuverlässigkeit durch die Replikation der Daten auf mehreren Hosts und benötigt daher theoretisch keinen RAID- Speicher (Redundant Array of Independent Disks) auf den Hosts (zur Steigerung der E/A-Leistung sind jedoch einige RAID-Konfigurationen weiterhin sinnvoll). Mit dem Standardwert für die Replikation (3) werden die Daten auf drei Knoten gespeichert: zwei im selben Rack und einer in einem anderen. Die Datenknoten können miteinander kommunizieren, um Daten neu zu verteilen, Kopien zu verschieben und die Datenreplikation hoch zu halten. HDFS ist nicht vollständig POSIX-konform, da die Anforderungen an ein POSIX-Dateisystem von den Zielen einer Hadoop-Anwendung abweichen. Der Vorteil eines nicht vollständig POSIX-konformen Dateisystems liegt in der höheren Leistung beim Datendurchsatz und der Unterstützung von Nicht-POSIX-Operationen wie z. B. Append. [ 39 ]
Im Mai 2012 wurden HDFS Hochverfügbarkeitsfunktionen hinzugefügt [ 40 ] , die es dem Hauptmetadatenserver, dem sogenannten NameNode, ermöglichen, manuell auf ein Backup umzuschalten. Das Projekt hat außerdem mit der Entwicklung automatischer Failover-Verfahren begonnen .
Das HDFS-Dateisystem beinhaltet einen sogenannten sekundären Namenode . Dieser Begriff ist irreführend und könnte fälschlicherweise als Backup-Namenode interpretiert werden, falls der primäre Namenode ausfällt. Tatsächlich verbindet sich der sekundäre Namenode regelmäßig mit dem primären Namenode und erstellt Snapshots der Verzeichnisinformationen des primären Namenodes. Diese Snapshots werden anschließend in lokalen oder entfernten Verzeichnissen gespeichert. Mithilfe dieser Checkpoints kann ein ausgefallener primärer Namenode neu gestartet werden, ohne dass das gesamte Protokoll der Dateisystemaktionen erneut abgespielt und anschließend bearbeitet werden muss, um eine aktuelle Verzeichnisstruktur zu erstellen. Da der Namenode die zentrale Stelle für die Speicherung und Verwaltung von Metadaten ist, kann er bei der Unterstützung einer großen Anzahl von Dateien, insbesondere vieler kleiner Dateien, zu einem Engpass werden. HDFS Federation, eine neue Funktion, zielt darauf ab, dieses Problem teilweise zu beheben, indem mehrere Namensräume von separaten Namenodes bedient werden können. Darüber hinaus weist HDFS einige Probleme auf, wie z. B. Schwierigkeiten mit kleinen Dateien, Skalierungsprobleme, einen Single Point of Failure (SPoF) und Engpässe bei großen Metadatenanfragen. Ein Vorteil von HDFS ist die Datenwahrnehmung zwischen Job- und Task-Tracker. Der Job-Tracker plant Map- oder Reduce-Jobs auf den Task-Trackern unter Berücksichtigung des Datenspeicherorts. Beispiel: Enthält Knoten A die Daten (a, b, c) und Knoten X die Daten (x, y, z), plant der Job-Tracker, dass Knoten A Map- oder Reduce-Tasks auf (a, b, c) und Knoten X Map- oder Reduce-Tasks auf (x, y, z) ausführt. Dadurch wird der Netzwerkverkehr reduziert und unnötige Datenübertragungen werden vermieden. Bei der Verwendung von Hadoop mit anderen Dateisystemen steht dieser Vorteil nicht immer zur Verfügung. Dies kann, wie bei datenintensiven Jobs gezeigt wurde, die Job-Abschlusszeiten erheblich beeinflussen. [ 41 ]
HDFS wurde hauptsächlich für unveränderliche Dateien konzipiert und ist möglicherweise nicht für Systeme geeignet, die gleichzeitige Schreibvorgänge erfordern. [ 39 ]
HDFS kann unter Linux und einigen anderen Unix -Systemen direkt mit einem virtuellen Dateisystem vom Typ Filesystem in Userspace (FUSE) eingebunden werden .
Der Dateizugriff kann über die native Java-API, die Thrift- API (die einen Client in einer Reihe von Sprachen generiert, z. B. C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa , Smalltalk und OCaml ), die Kommandozeilenschnittstelle , die HDFS-UI- Webanwendung über HTTP oder über Netzwerk-Clientbibliotheken von Drittanbietern erfolgen. [ 42 ]
HDFS ist auf Portabilität auf verschiedenen Hardwareplattformen und Kompatibilität mit einer Vielzahl von Betriebssystemen ausgelegt. Das HDFS-Design birgt jedoch Einschränkungen hinsichtlich der Portabilität, die zu Leistungsengpässen führen können, da die Java-Implementierung keine plattformspezifischen Funktionen nutzen kann. [ 43 ] Aufgrund der weitverbreiteten Integration in Unternehmensinfrastrukturen ist die Überwachung der HDFS-Performance im großen Maßstab immer wichtiger geworden. Die Überwachung der End-to-End-Performance erfordert die Erfassung von Metriken von Datanodes, Namenodes und dem zugrunde liegenden Betriebssystem. [ 44 ] Derzeit stehen verschiedene Monitoring-Plattformen zur Verfügung, darunter Hortonworks , Cloudera und Datadog .
Andere Dateisysteme
Hadoop arbeitet direkt mit jedem verteilten Dateisystem, das vom zugrundeliegenden Betriebssystem über eine file://URL eingebunden werden kann. Dies hat jedoch seinen Preis: den Verlust der Datenlokalität. Um den Netzwerkverkehr zu reduzieren, muss Hadoop wissen, welche Server den Daten am nächsten sind – Informationen, die Hadoop-spezifische Dateisystembrücken liefern können.
Im Mai 2011 umfasste die Liste der mit Apache Hadoop mitgelieferten, unterstützten Dateisysteme folgende Systeme:
- HDFS: Hadoops eigenes Rack-fähiges Dateisystem. [ 45 ] Es ist für Speicherkapazitäten von mehreren zehn Petabyte ausgelegt und läuft auf den Dateisystemen der zugrunde liegenden Betriebssysteme .
- Apache Hadoop Ozone: HDFS-kompatibler Objektspeicher, optimiert für Milliarden kleiner Dateien.
- FTP- Dateisystem: Dieses speichert alle seine Daten auf entfernt zugänglichen FTP-Servern.
- Amazon S3 (Amazon Simple Storage Service) Objektspeicher: Dieser Speicher ist für Cluster vorgesehen, die auf der Server-on-Demand-Infrastruktur von Amazon Elastic Compute Cloud gehostet werden . Da das Dateisystem vollständig remote ist, wird keine Rack-Orientierung berücksichtigt.
- Windows Azure Storage Blobs (WASB)-Dateisystem: Dies ist eine Erweiterung von HDFS, die es Hadoop-Distributionen ermöglicht, auf Daten in Azure-Blob-Speichern zuzugreifen, ohne die Daten dauerhaft in den Cluster zu verschieben.
Es wurden auch mehrere Drittanbieter-Dateisystembrücken entwickelt, von denen jedoch keine in den Hadoop-Distributionen enthalten ist. Einige kommerzielle Hadoop-Distributionen verwenden jedoch standardmäßig ein alternatives Dateisystem – insbesondere IBM und MapR .
- Im Jahr 2009 diskutierte IBM die Ausführung von Hadoop über das IBM General Parallel File System . [ 46 ] Der Quellcode wurde im Oktober 2009 veröffentlicht. [ 47 ]
- Im April 2010 veröffentlichte Parascale den Quellcode zur Ausführung von Hadoop auf dem Parascale-Dateisystem. [ 48 ]
- Im April 2010 veröffentlichte Appsry einen Hadoop-Dateisystemtreiber zur Verwendung mit seinem eigenen CloudIQ-Speicherprodukt. [ 49 ]
- Im Juni 2010 diskutierte HP über einen ortsabhängigen IBRIX Fusion- Dateisystemtreiber. [ 50 ]
- Im Mai 2011 kündigte MapR Technologies Inc. die Verfügbarkeit eines alternativen Dateisystems für Hadoop an, MapR FS , das das HDFS-Dateisystem durch ein vollständiges Dateisystem mit wahlfreiem Lese-/Schreibzugriff ersetzte.
JobTracker und TaskTracker: die MapReduce-Engine
Über den Dateisystemen befindet sich die MapReduce-Engine, die aus einem JobTracker besteht . Clientanwendungen übermitteln MapReduce-Jobs an diesen JobTracker. Der JobTracker verteilt die Arbeit auf verfügbare TaskTracker- Knoten im Cluster und versucht dabei, die Arbeit so nah wie möglich an den Daten zu halten. Dank eines rackfähigen Dateisystems weiß der JobTracker, welcher Knoten die Daten enthält und welche anderen Maschinen sich in der Nähe befinden. Kann die Arbeit nicht auf dem Knoten ausgeführt werden, auf dem sich die Daten befinden, werden Knoten im selben Rack priorisiert. Dies reduziert den Netzwerkverkehr im Hauptnetzwerk. Fällt ein TaskTracker aus oder tritt ein Timeout auf, wird der entsprechende Teil des Jobs neu eingeplant. Der TaskTracker auf jedem Knoten startet einen separaten Java Virtual Machine (JVM)-Prozess, um zu verhindern, dass der TaskTracker selbst ausfällt, falls der laufende Job seine JVM zum Absturz bringt. Der TaskTracker sendet alle paar Minuten einen Heartbeat an den JobTracker, um seinen Status zu überprüfen. Status und Informationen zum JobTracker und TaskTracker werden von Jetty bereitgestellt und können über einen Webbrowser eingesehen werden.
Bekannte Einschränkungen dieses Ansatzes sind:
- Die Zuweisung von Aufgaben an TaskTracker ist sehr einfach. Jeder TaskTracker verfügt über eine bestimmte Anzahl freier Slots (z. B. „4 Slots“). Jede aktive Map- oder Reduce-Aufgabe belegt einen Slot. Der JobTracker weist die Aufgaben dem Tracker zu, der den Daten am nächsten liegt und über einen freien Slot verfügt. Die aktuelle Systemlast der zugewiesenen Maschine und damit deren tatsächliche Verfügbarkeit werden nicht berücksichtigt .
- Wenn ein TaskTracker sehr langsam ist, kann dies den gesamten MapReduce-Job verzögern – insbesondere gegen Ende, wenn alle Prozesse auf die langsamste Aufgabe warten müssen. Mit aktivierter spekulativer Ausführung kann eine einzelne Aufgabe jedoch auf mehreren Slave-Knoten ausgeführt werden.
Terminplanung
Hadoop verwendet standardmäßig FIFO- Scheduling und optional fünf Scheduling-Prioritäten, um Jobs aus einer Arbeitswarteschlange einzuplanen. [ 51 ] In Version 0.19 wurde der Job-Scheduler aus dem JobTracker ausgelagert und gleichzeitig die Möglichkeit hinzugefügt, einen alternativen Scheduler zu verwenden (wie den Fair-Scheduler oder den Capacity-Scheduler , die im Folgenden beschrieben werden). [ 52 ]
Messeplaner
Der Fair Scheduler wurde von Facebook entwickelt . [ 53 ] Ziel des Fair Schedulers ist es, schnelle Reaktionszeiten für kleine Aufträge und eine hohe Dienstgüte (QoS) für Produktionsaufträge zu gewährleisten. Der Fair Scheduler basiert auf drei Grundkonzepten. [ 54 ]
- Jobs werden in Pools gruppiert .
- Jedem Pool wird ein garantierter Mindestanteil zugewiesen.
- Die überschüssige Kapazität wird auf die einzelnen Aufträge aufgeteilt.
Standardmäßig werden nicht kategorisierte Jobs einem Standardpool zugeordnet. Für Pools müssen die Mindestanzahl an Map-Slots, Reduce-Slots sowie eine Begrenzung der Anzahl laufender Jobs festgelegt werden.
Kapazitätsplaner
Der Kapazitätsplaner wurde von Yahoo entwickelt. Er unterstützt mehrere Funktionen, die denen des fairen Planers ähneln. [ 55 ]
- Den Warteschlangen wird ein Bruchteil der gesamten Ressourcenkapazität zugeteilt.
- Freie Ressourcen werden Warteschlangen zugeteilt, die über ihre Gesamtkapazität hinausgehen.
- Innerhalb einer Warteschlange hat ein Auftrag mit hoher Priorität Zugriff auf die Ressourcen der Warteschlange.
Sobald ein Job läuft, findet keine Unterbrechung statt.
Unterschiede zwischen Hadoop 1 und Hadoop 2 (YARN)
Der größte Unterschied zwischen Hadoop 1 und Hadoop 2 ist die Einführung von YARN (Yet Another Resource Negotiator), das in der ersten Hadoop-Version die MapReduce-Engine ersetzte. YARN optimiert die Ressourcenzuweisung an verschiedene Anwendungen. Es verwendet zwei Daemons mit unterschiedlichen Aufgaben: den Ressourcenmanager , der die Auftragsverfolgung und Ressourcenzuweisung übernimmt, und den Anwendungsmaster , der den Ausführungsfortschritt überwacht.
Unterschiede zwischen Hadoop 2 und Hadoop 3
Hadoop 3 bietet einige wichtige Neuerungen. Beispielsweise ermöglicht Hadoop 3 im Gegensatz zu Hadoop 2, wo es nur einen einzigen Namenode gibt , die Verwendung mehrerer Namenodes, wodurch das Problem des Single Point of Failure gelöst wird.
In Hadoop 3 gibt es Container, die nach dem Docker -Prinzip arbeiten , was den Zeitaufwand für die Anwendungsentwicklung reduziert.
Eine der größten Änderungen besteht darin, dass Hadoop 3 den Speicheraufwand durch Erasure Coding verringert .
Darüber hinaus ermöglicht Hadoop 3 die Nutzung von GPU-Hardware innerhalb des Clusters, was ein erheblicher Vorteil für die Ausführung von Deep-Learning-Algorithmen auf einem Hadoop-Cluster ist. [ 56 ]
Weitere Anwendungen
Das HDFS ist nicht auf MapReduce-Jobs beschränkt. Es kann für weitere Anwendungen genutzt werden, von denen viele bei Apache in Entwicklung sind. Dazu gehören die HBase- Datenbank, das Machine-Learning- System Apache Mahout und das Data Warehouse Apache Hive . Theoretisch eignet sich Hadoop für alle Workloads, die eher batchorientiert als echtzeitfähig, sehr datenintensiv sind und von Parallelverarbeitung profitieren . Es kann auch Echtzeitsysteme wie Lambda-Architekturen , Apache Storm , Flink und Spark Streaming ergänzen . [ 57 ]
Zu den kommerziellen Anwendungen von Hadoop gehören: [ 58 ]
- Log- oder Clickstream- Analyse
- Marketinganalysen
- Maschinelles Lernen und Data Mining
- Bildverarbeitung
- XML- Nachrichtenverarbeitung
- Web-Crawling
- Archivierungsarbeiten zur Einhaltung von Vorschriften, einschließlich relationaler und tabellarischer Daten
Prominente Anwendungsfälle
Am 19. Februar 2008 veröffentlichte Yahoo! Inc. die nach eigenen Angaben weltweit größte Hadoop-Produktionsanwendung. Die Yahoo! Search Webmap ist eine Hadoop-Anwendung, die auf einem Linux-Cluster mit über 10.000 Kernen läuft und Daten für jede Yahoo!-Websuchanfrage generiert. [ 59 ] Yahoo! betreibt mehrere Hadoop-Cluster; weder HDFS-Dateisysteme noch MapReduce-Jobs sind auf mehrere Rechenzentren verteilt. Jeder Knoten eines Hadoop-Clusters initialisiert das Linux-Image inklusive der Hadoop-Distribution. Zu den Aufgaben der Cluster gehören unter anderem die Indexberechnungen für die Yahoo!-Suchmaschine. Im Juni 2009 stellte Yahoo! den Quellcode seiner Hadoop-Version der Open-Source-Community zur Verfügung. [ 60 ]
Im Jahr 2010 behauptete Facebook, den weltweit größten Hadoop-Cluster mit 21 PB Speicherplatz zu betreiben. [ 61 ] Im Juni 2012 gaben sie bekannt, dass die Datenmenge auf 100 PB angewachsen sei [ 62 ] und teilten später im selben Jahr mit, dass die Datenmenge täglich um etwa ein halbes PB zunehme. [ 63 ]
Im Jahr 2013 hatte sich Hadoop weit verbreitet: Mehr als die Hälfte der Fortune-50-Unternehmen nutzten Hadoop. [ 64 ]
Papiere
Einflussreiche Veröffentlichungen zur Entstehung, Entwicklung und Nutzung von Hadoop und Big-Data-Verarbeitung sind unter anderem: Jeffrey Dean, Sanjay Ghemawat (2004) MapReduce: Simplified Data Processing on Large Clusters , Google. Diese Arbeit inspirierte Doug Cutting zur Entwicklung einer Open-Source-Implementierung des MapReduce-Frameworks. Er nannte sie Hadoop, nach dem Spielzeugelefanten seines Sohnes.
- Michael Franklin, Alon Halevy, David Maier (2005) Von Datenbanken zu Datenräumen: Eine neue Abstraktion für das Informationsmanagement . Die Autoren betonen die Notwendigkeit, dass Speichersysteme alle Datenformate akzeptieren und APIs für den Datenzugriff bereitstellen, die sich basierend auf dem Datenverständnis des Speichersystems weiterentwickeln.
- Fay Chang et al. (2006) Bigtable: Ein verteiltes Speichersystem für strukturierte Daten , Google.
- Robert Kallman et al. (2008) H-Store: ein leistungsstarkes, verteiltes Hauptspeicher-Transaktionsverarbeitungssystem
Siehe auch
- Apache Accumulo – Sicheres Bigtable [ 65 ]
- Apache Cassandra ist eine spaltenorientierte Datenbank, die den Zugriff von Hadoop aus unterstützt.
- Apache CouchDB ist eine Datenbank, die JSON für Dokumente, JavaScript für MapReduce-Abfragen und reguläres HTTP für eine API verwendet.
- Big Data
- Datenintensives Rechnen
- HPCC – LexisNexis Risk Solutions Hochleistungsrechnercluster
- Hypertable – HBase-Alternative
- Sector/Sphere – Open-Source-verteilte Speicherung und Verarbeitung
- Slurm Workload Manager
Referenzen
- ^ „Hadoop Releases“ . apache.org . Apache Software Foundation. Archiviert vom Original am 28. April 2019. Abgerufen am 28. April 2019 .
- ^ a b „Apache Hadoop“ . Archiviert vom Original am 1. Juni 2022. Abgerufen am 27. September 2022 .
- ^ Judge, Peter (22. Oktober 2012). „Doug Cutting: Big Data ist keine Blase“ . silicon.co.uk . Abgerufen am 11. März 2018 .
- ^ Woodie, Alex (12. Mai 2014). „Warum Hadoop auf IBM Power?“ . datanami.com . Datanami . Abgerufen am 11. März 2018 .
- ^ Hemsoth, Nicole (15. Oktober 2014). „Cray bringt Hadoop in den HPC-Bereich“ . hpcwire.com . Abgerufen am 11. März 2018 .
- ^ „Willkommen bei Apache Hadoop!“ . hadoop.apache.org . Archiviert vom Original am 23. September 2017 . Abgerufen am 25. August 2016 .
- ^ „Was ist das Hadoop Distributed File System (HDFS)?“ . ibm.com . IBM . Abgerufen am 12. April 2021 .
- ^ Malak, Michael (19. September 2014). „Datenlokalität: HPC vs. Hadoop vs. Spark“ . datascienceassn.org . Data Science Association. Archiviert vom Original am 10. September 2017. Abgerufen am 30. Oktober 2014 .
- ^ Wang, Yandong; Goldstone, Robin; Yu, Weikuan; Wang, Teng (Oktober 2014). „Charakterisierung und Optimierung von speicherbasiertem MapReduce auf HPC-Systemen“. 2014 IEEE 28th International Parallel and Distributed Processing Symposium . IEEE. S. 799–808 . doi : 10.1109/IPDPS.2014.87 . ISBN 978-1-4799-3800-1S2CID 11157612 .
- ^ „Ressource (Apache Hadoop Main 2.5.1 API)“ . apache.org . Apache Software Foundation. 12. September 2014. Archiviert vom Original am 6. Oktober 2014. Abgerufen am 30. September 2014 .
- ^ Murthy, Arun (15. August 2012). „Apache Hadoop YARN – Konzepte und Anwendungen“ . hortonworks.com . Hortonworks. Archiviert vom Original am 11. September 2017. Abgerufen am 30. September 2014 .
- ^ „Continuuity sammelt 10 Millionen US-Dollar in einer Serie-A-Finanzierungsrunde ein, um die Entwicklung von Big-Data-Anwendungen im Hadoop-Ökosystem voranzutreiben“ . finance.yahoo.com . Marketwired . 14. November 2012. Archiviert vom Original am 10. September 2017. Abgerufen am 30. Oktober 2014 .
- ^ „Hadoop-bezogene Projekte unter“ . Hadoop.apache.org. Archiviert vom Original am 23. September 2017. Abgerufen am 17. Oktober 2013 .
- ^ Data Science und Big-Data-Analyse: Daten entdecken, analysieren, visualisieren und präsentieren . John Wiley & Sons. 19. Dezember 2014. S. 300. ISBN 9781118876220Abgerufen am 29. Januar 2015 .
- ^ „Using Hadoop streaming with perl for map reduce“ . Stack Overflow . 29. Juli 2025. Abgerufen am 1. August 2025 .
- ^ Cutting, Mike; Cafarella, Ben; Lorica, Doug (31. März 2016). „Die nächsten 10 Jahre von Apache Hadoop“ . O'Reilly Media . Abgerufen am 12. Oktober 2017 .
- ^ Ghemawat, Sanjay; Gobioff, Howard; Leung, Shun-Tak (2003). „Das Google-Dateisystem“ . S. 20–43 . Archiviert vom Original am 2. Dezember 2017. Abgerufen am 5. März 2016 .
- ^ Dean, Jeffrey; Ghemawat, Sanjay (2004). „MapReduce: Vereinfachte Datenverarbeitung auf großen Clustern“ (PDF) . S. 137–150 .
- ^ Cutting, Doug (28. Januar 2006). „Anfrage für neue Mailinglisten: Hadoop“ . issues.apache.org .
Das Lucene PMC hat beschlossen, einen Teil von Nutch in ein neues Unterprojekt namens Hadoop auszugliedern.
- ^ Vance, Ashlee (17. März 2009). „Hadoop, ein freies Softwareprogramm, findet Anwendung jenseits der Suche“ . The New York Times . Archiviert vom Original am 30. August 2011. Abgerufen am 20. Januar 2010 .
- ^ Cutting, Doug (30. März 2006). "[ERGEBNIS] ABSTIMMUNG: Owen O'Malley als Hadoop-Committer hinzufügen" . hadoop-common-dev (Mailingliste).
- ^ „Index von /dist/hadoop/core“ . archive.apache.org . Abgerufen am 11. Dezember 2017 .
- ^ „Wer wir sind“ . hadoop.apache.org . Abgerufen am 11. Dezember 2017 .
- ^ Borthakur, Dhruba (2006). „Das Hadoop Distributed File System: Architektur und Design“ (PDF) . Apache Hadoop Code Repository .
- ^ „Version 2.10.2 verfügbar“ . hadoop.apache.org .
- ^ „Version 3.0.0 allgemein verfügbar“ . hadoop.apache.org .
- ^ „Version 3.0.3 verfügbar“ . hadoop.apache.org .
- ^ „Version 3.1.4 verfügbar“ . hadoop.apache.org .
- ^ „Version 3.2.4 verfügbar“ . hadoop.apache.org .
- ^ „Version 3.3.6 verfügbar“ . hadoop.apache.org .
- ^ „Version 3.4.0 verfügbar“ . hadoop.apache.org .
- ^ Chouraria, Harsh (21. Oktober 2012). „MR2 und YARN kurz erklärt“ . Cloudera.com . Archiviert vom Original am 22. Oktober 2013. Abgerufen am 23. Oktober 2013 .
- ^ „HDFS-Benutzerhandbuch“ . Hadoop.apache.org . Abgerufen am 4. September 2014 .
- ^ "Ausführen von Hadoop auf einem Ubuntu Linux-System (Multi-Node-Cluster)" .
- ^ „Ausführen von Hadoop auf Ubuntu Linux (Einzelknoten-Cluster)“ . Abgerufen am 6. Juni 2013 .
- ^ Balram. „Big Data Hadoop Tutorial für Anfänger“ . www.gyansetu.in . Abgerufen am 11. März 2021 .
- ^ „Apache Hadoop 2.7.5 – HDFS Benutzerhandbuch“ . Archiviert vom Original am 23. Oktober 2019. Abgerufen am 19. Juni 2020 .
- ^ „HDFS-Architektur“ . Abgerufen am 1. September 2013 .
- ^ a b Pessach, Yaniv (2013). Verteilte Speicherung: Konzepte, Algorithmen und Implementierungen . OL 25423189M .
- ^ „Version 2.0 bietet manuelles Failover, und an einem automatischen Failover wird gearbeitet .“ Hadoop.apache.org. Archiviert vom Original am 1. Juni 2022. Abgerufen am 30. Juli 2013 .
- ^ „Verbesserung der MapReduce-Leistung durch Datenplatzierung in heterogenen Hadoop-Clustern“ (PDF) . Eng.auburn.ed. April 2010.
- ^ „HDFS einbinden“ . Archiviert vom Original am 14. Mai 2014. Abgerufen am 5. August 2016 .
- ^ Shafer, Jeffrey; Rixner, Scott; Cox, Alan. „Das Hadoop Distributed Filesystem: Balance zwischen Portabilität und Leistung“ (PDF) . Rice University . Abgerufen am 19. September 2016 .
- ^ Mouzakitis, Evan (21. Juli 2016). „Wie man Hadoop-Leistungsmetriken sammelt“ . Abgerufen am 24. Oktober 2016 .
- ^ „HDFS-Benutzerhandbuch – Rack-Awareness“ . Hadoop.apache.org. Archiviert vom Original am 13. November 2013. Abgerufen am 17. Oktober 2013 .
- ^ „Cloud-Analytics: Müssen wir den Speicherstack wirklich neu erfinden?“ (PDF) . IBM. Juni 2009.
- ^ „HADOOP-6330: Integration der IBM General Parallel File System-Implementierung der Hadoop-Dateisystemschnittstelle“ . IBM. 23. Oktober 2009.
- ^ „HADOOP-6704: Unterstützung für das Parascale-Dateisystem hinzufügen“ . Parascale. 14. April 2010. Archiviert vom Original am 16. Juni 2012. Abgerufen am 16. Januar 2012 .
- ^ „HDFS mit CloudIQ-Speicher“ . Appistry, Inc. 6. Juli 2010. Archiviert vom Original am 5. April 2014. Abgerufen am 10. Dezember 2013 .
- ^ „High Availability Hadoop“ . HP. 9. Juni 2010. Archiviert vom Original am 22. Juni 2010. Abgerufen am 6. Juli 2010 .
- ^ „Hadoop Commands Guide“ . 9. Oktober 2024. Archiviert vom Original am 17. August 2011. Abgerufen am 17. November 2024 .
- ^ „Refactor the scheduler out of the JobTracker“ . Hadoop Common . Apache Software Foundation . Abgerufen am 9. Juni 2012 .
- ^ Jones, M. Tim (6. Dezember 2011). „Scheduling in Hadoop“ . ibm.com . IBM . Archiviert vom Original am 5. April 2014. Abgerufen am 20. November 2013 .
- ^ „Hadoop Fair Scheduler Design Document“ (PDF) . apache.org . Abgerufen am 12. Oktober 2017 .
- ^ „CapacityScheduler Guide“ . Hadoop.apache.org . Abgerufen am 31. Dezember 2015 .
- ^ „Wie Apache Hadoop 3 gegenüber Apache Hadoop 2 einen Mehrwert bietet“ . hortonworks.com . 7. Februar 2018. Archiviert vom Original am 16. November 2018. Abgerufen am 11. Juni 2018 .
- ^ Chintapalli, Sanket; Dagit, Derek; Evans, Bobby; Farivar, Reza; Graves, Thomas; Holderbaugh, Mark; Liu, Zhuo; Nusbaum, Kyle; Patil, Kishorkumar; Peng, Boyang Jerry; Poulosky, Paul (Mai 2016). „Benchmarking Streaming Computation Engines: Storm, Flink and Spark Streaming“. 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW) . IEEE. S. 1789–1792 . doi : 10.1109/IPDPSW.2016.138 . ISBN 978-1-5090-3682-0. S2CID 2180634 .
- ^ "„Wie über 30 Unternehmen Hadoop nutzen“, in DBMS2“ . Dbms2.com. 10. Oktober 2009. Archiviert vom Original am 17. Februar 2010. Abgerufen am 17. Oktober 2013 .
- ^ „Yahoo! startet die weltweit größte Hadoop-Produktionsanwendung“ . Yahoo . 19. Februar 2008. Archiviert vom Original am 7. März 2016. Abgerufen am 31. Dezember 2015 .
- ^ „Hadoop und verteiltes Rechnen bei Yahoo!“ . Yahoo!. 20. April 2011. Archiviert vom Original am 14. August 2011. Abgerufen am 17. Oktober 2013 .
- ^ „HDFS: Facebook hat den weltweit größten Hadoop-Cluster!“ Hadoopblog.blogspot.com. 9. Mai 2010. Abgerufen am 23. Mai 2012 .
- ^ „Unter der Haube: Zuverlässigkeit des verteilten Hadoop-Dateisystems mit Namenode und Avatarnode“ . Facebook . Abgerufen am 13. September 2012 .
- ^ „Unter der Haube: MapReduce-Jobs effizienter planen mit Corona“ . Facebook . Abgerufen am 9. November 2012 .
- ^ „Altiors AltraSTAR – Hadoop Storage Accelerator and Optimizer Now Certified on CDH4 (Cloudera's Distribution Including Apache Hadoop Version 4)“ (Pressemitteilung). Eatontown, NJ: Altior Inc. 18. Dezember 2012. Abgerufen am 30. Oktober 2013 .
- ^ „Apache Accumulo Benutzerhandbuch: Sicherheit“ . apache.org . Apache Software Foundation . Abgerufen am 3. Dezember 2014 .
Bibliographie
- Lam, Chuck (28. Juli 2010). Hadoop in Action (1. Aufl.). Manning Publications . S. 325. ISBN 978-1-935-18219-1Die
- Venner, Jason (22. Juni 2009). Pro Hadoop (1. Aufl.). Drücken Sie . P. 440. ISBN 978-1-430-21942-2Archiviert vom Original am 5. Dezember 2010. Abgerufen am 3. Juli 2009 .
- White, Tom (16. Juni 2009). Hadoop: Das umfassende Handbuch (1. Aufl.). O'Reilly Media . S. 524. ISBN 978-0-596-52197-4Die
- Vohra, Deepak (Oktober 2016). Praktisches Hadoop-Ökosystem: Ein umfassender Leitfaden zu Hadoop-bezogenen Frameworks und Tools (1. Aufl.). Apress . S. 429. ISBN 978-1-4842-2199-0Die
- Wiktorski, Tomasz (Januar 2019). Datenintensive Systeme . Cham, Schweiz: Springer. ISBN 978-3-030-04603-3Die