Apache Hadoop - Apache Hadoop

Apache Hadoop
Hadoop-Logo new.svg
Originalautor(en) Doug Cutting , Mike Cafarella
Entwickler Apache Software Foundation
Erstveröffentlichung 1. April 2006 ; vor 15 Jahren ( 2006-04-01 )
Stabile Version
2.7.x 2.7.7 / 31. Mai 2018 ; Vor 3 Jahren ( 2018-05-31 )
2.8.x 2.8.5 / 15. September 2018 ; vor 2 Jahren ( 2018-09-15 )
2.9.x 2.9.2 / 9. November 2018 ; vor 2 Jahren ( 2018-11-09 )
2.10.x 2.10.1 / 21.09.2020 ; vor 10 Monaten ( 2020-09-21 )
3.1.x 3.1.4 / 3. August 2020 ; vor 12 Monaten ( 2020-08-03 )
3.2.x 3.2.2 / 9. Januar 2021 ; vor 7 Monaten ( 2021-01-09 )
3.3.x 3.3.1 / 15. Juni 2021 ; Vor 2 Monaten ( 2021-06-15 )
Repository Hadoop-Repository
Geschrieben in Java
Betriebssystem Plattformübergreifend
Typ Verteiltes Dateisystem
Lizenz Apache-Lizenz 2.0
Webseite hadoop .apache .org Bearbeite dies bei Wikidata

Apache Hadoop ( / h ə d U p / ) ist eine Sammlung von Open-Source - Software - Werkzeugen enthalten , ermöglicht ein Netzwerk von vielen Computern , die Probleme zu lösen , die große Mengen von Daten und Berechnung. Es bietet ein Software-Framework für die verteilte Speicherung und Verarbeitung von Big Data unter Verwendung des MapReduce- Programmiermodells . Hadoop wurde ursprünglich für Computercluster entwickelt, die aus handelsüblicher Hardware erstellt wurden , die immer noch häufig verwendet wird. Es hat seitdem auch in Clustern von High-End-Hardware Verwendung gefunden. Alle Module in Hadoop wurden mit der grundlegenden Annahme entwickelt, dass Hardwarefehler häufig vorkommen und automatisch vom Framework behandelt werden sollten.

Der Kern von Apache Hadoop besteht aus einem Speicherteil, bekannt als Hadoop Distributed File System (HDFS), und einem Verarbeitungsteil, der ein MapReduce-Programmiermodell ist. Hadoop teilt Dateien in große Blöcke auf und verteilt sie auf Knoten in einem Cluster. Es überträgt dann verpackten Code in Knoten, um die Daten parallel zu verarbeiten. Dieser Ansatz nutzt die Datenlokalität , bei der Knoten die Daten manipulieren, auf die sie Zugriff haben. Dadurch kann der Datensatz schneller und effizienter verarbeitet werden, als dies in einer konventionelleren Supercomputerarchitektur der Fall wäre , die auf einem parallelen Dateisystem beruht , bei dem Berechnungen und Daten über Hochgeschwindigkeitsnetzwerke verteilt werden.

Das grundlegende Apache Hadoop-Framework besteht aus den folgenden Modulen:

  • Hadoop Common – enthält Bibliotheken und Dienstprogramme, die von anderen Hadoop-Modulen benötigt werden;
  • Hadoop Distributed File System (HDFS) – ein verteiltes Dateisystem, das Daten auf handelsüblichen Computern speichert und eine sehr hohe Gesamtbandbreite im gesamten Cluster bietet;
  • Hadoop YARN – (eingeführt im Jahr 2012) eine Plattform, die für die Verwaltung von Computerressourcen in Clustern und deren Verwendung für die Planung von Benutzeranwendungen verantwortlich ist;
  • Hadoop MapReduce – eine Implementierung des MapReduce-Programmiermodells für die umfangreiche Datenverarbeitung.
  • Hadoop Ozone – (eingeführt im Jahr 2020) Ein Objektspeicher für Hadoop

Der Begriff Hadoop wird häufig sowohl für Basismodule und Untermodule als auch für das Ökosystem oder eine Sammlung zusätzlicher Softwarepakete verwendet, die auf oder neben Hadoop installiert werden können, wie z. B. Apache Pig , Apache Hive , Apache HBase , Apache Phoenix , Apache Spark , Apache ZooKeeper , Cloudera Impala , Apache Flume , Apache Sqoop , Apache Oozie und Apache Storm .

Die MapReduce- und HDFS-Komponenten von Apache Hadoop wurden von Google- Papieren zu MapReduce und Google File System inspiriert .

Das Hadoop-Framework selbst ist größtenteils in der Programmiersprache Java geschrieben , mit etwas nativem Code in C und Befehlszeilen- Dienstprogrammen, die als Shell-Skripte geschrieben sind . Obwohl MapReduce Java-Code weit verbreitet ist, kann jede beliebige Programmiersprache mit Hadoop Streaming verwendet werden, um die Karte zu implementieren und Teile des Benutzerprogramms zu reduzieren. Andere Projekte im Hadoop-Ökosystem bieten umfangreichere Benutzeroberflächen.

Geschichte

Laut seinen Mitbegründern Doug Cutting und Mike Cafarella war der Ursprung von Hadoop das im Oktober 2003 veröffentlichte Google File System Paper. Dieses Paper brachte ein weiteres von Google hervor – "MapReduce: Simplified Data Processing on Large Clusters". Die Entwicklung begann mit dem Apache Nutch- Projekt, wurde aber im Januar 2006 in das neue Hadoop-Unterprojekt verschoben. Doug Cutting, der bei Yahoo! damals benannt nach dem Spielzeugelefanten seines Sohnes. Der ursprüngliche Code, der aus Nutch herausgerechnet wurde, bestand aus etwa 5.000 Codezeilen für HDFS und etwa 6.000 Codezeilen für MapReduce.

Im März 2006 war Owen O'Malley der erste Committer, der sich dem Hadoop-Projekt anschloss; Hadoop 0.1.0 wurde im April 2006 veröffentlicht. Es entwickelt sich durch Beiträge, die an dem Projekt geleistet werden, weiter. Das allererste Designdokument für das Hadoop Distributed File System wurde 2007 von Dhruba Borthakur geschrieben.

Die Architektur

Hadoop besteht aus dem Hadoop Common- Paket, das Abstraktionen auf Dateisystem- und Betriebssystemebene bereitstellt, einer MapReduce-Engine (entweder MapReduce/MR1 oder YARN/MR2) und dem Hadoop Distributed File System (HDFS). Das Hadoop Common-Paket enthält die Java Archive (JAR) -Dateien und Skripts, die zum Starten von Hadoop erforderlich sind.

Für eine effektive Arbeitsplanung sollte jedes Hadoop-kompatible Dateisystem eine Standorterkennung bereitstellen, dh den Namen des Racks, insbesondere des Netzwerk-Switches, auf dem sich ein Worker-Knoten befindet. Hadoop-Anwendungen können diese Informationen verwenden, um Code auf dem Knoten auszuführen, auf dem sich die Daten befinden, und, falls dies nicht der Fall ist, auf demselben Rack/Switch, um den Backbone-Verkehr zu reduzieren. HDFS verwendet diese Methode beim Replizieren von Daten für Datenredundanz über mehrere Racks hinweg. Dieser Ansatz reduziert die Auswirkungen eines Rack-Stromausfalls oder Switch-Ausfalls; Wenn einer dieser Hardwarefehler auftritt, bleiben die Daten verfügbar.

Hadoop-Cluster
Ein Hadoop-Cluster mit mehreren Knoten

Ein kleiner Hadoop-Cluster umfasst einen einzelnen Master- und mehrere Worker-Knoten. Der Masterknoten besteht aus einem Job Tracker, Task Tracker, NameNode und DataNode. Ein Slave- oder Worker-Knoten fungiert sowohl als DataNode als auch als TaskTracker, obwohl es möglich ist, Nur-Daten- und Nur-Rechen-Worker-Knoten zu haben. Diese werden normalerweise nur in nicht standardmäßigen Anwendungen verwendet.

Hadoop erfordert Java Runtime Environment (JRE) 1.6 oder höher. Die standardmäßigen Start- und Herunterfahrskripts erfordern die Einrichtung von Secure Shell (SSH) zwischen den Knoten im Cluster.

In einem größeren Cluster werden HDFS-Knoten über einen dedizierten NameNode-Server verwaltet, um den Dateisystemindex zu hosten, und einen sekundären NameNode, der Snapshots der Speicherstrukturen des Namensknotens erstellen kann, wodurch Beschädigungen des Dateisystems und Datenverlust verhindert werden. Ebenso kann ein eigenständiger JobTracker-Server die Jobplanung über Knoten hinweg verwalten. Wenn Hadoop MapReduce mit einem alternativen Dateisystem verwendet wird, werden die NameNode-, sekundäre NameNode- und DataNode-Architektur von HDFS durch die dateisystemspezifischen Äquivalente 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. Einige halten es aufgrund seiner fehlenden POSIX- Konformität stattdessen für einen Datenspeicher , aber es bietet Shell-Befehle und Java-API- Methoden (Application Programming Interface) , die anderen Dateisystemen ähneln. Eine Hadoop-Instanz ist in HDFS und MapReduce unterteilt. HDFS wird zum Speichern der Daten verwendet und MapReduce wird zum Verarbeiten der Daten verwendet. HDFS hat fünf Dienste wie folgt:

  1. Knoten benennen
  2. Sekundärer Namensknoten
  3. Job-Tracker
  4. Datenknoten
  5. Aufgaben-Tracker

Die ersten drei sind Master-Dienste/Daemons/Nodes und die unteren zwei sind Slave-Dienste. Master-Dienste können miteinander kommunizieren und auf die gleiche Weise können Slave-Dienste miteinander kommunizieren. Name Node ist ein Master-Knoten und Daten-Knoten ist der entsprechende Slave-Knoten und kann miteinander kommunizieren.

Namensknoten: HDFS besteht nur aus einem Namensknoten, der als Masterknoten bezeichnet wird. Der Masterknoten kann Dateien verfolgen, das Dateisystem verwalten und enthält die Metadaten aller gespeicherten Daten. Insbesondere enthält der Namensknoten die Details der Anzahl der Blöcke, Orte des Datenknotens, in dem die Daten gespeichert sind, wo die Replikationen gespeichert sind, und andere Details. Der Name Node hat direkten Kontakt zum Client.

Datenknoten: Ein Datenknoten speichert Daten darin als Blöcke. Dieser wird auch als Slave-Knoten bezeichnet und speichert die tatsächlichen Daten in HDFS, das für das Lesen und Schreiben des Clients verantwortlich ist. Dies sind Sklavendämonen. Jeder Datenknoten sendet alle 3 Sekunden eine Heartbeat-Nachricht an den Namensknoten und teilt mit, dass er aktiv ist. Wenn der Name Node 2 Minuten lang keinen Heartbeat von einem Datenknoten empfängt, wird dieser Datenknoten als tot angesehen und der Prozess der Blockreplikationen auf einem anderen Datenknoten gestartet.

Sekundärer Namensknoten: Dieser kümmert sich nur um die Prüfpunkte der Dateisystem-Metadaten, die sich im Namensknoten befinden. Dies wird auch als Checkpoint-Knoten bezeichnet. Es ist der Hilfsknoten für den Namensknoten. Der sekundäre Namensknoten weist den Namensknoten an, eine fsimage & editlog-Datei zu erstellen und zu senden, woraufhin die komprimierte fsimage-Datei durch den sekundären Namensknoten erstellt wird.

Job Tracker: Job Tracker empfängt die Anfragen zur Ausführung von Map Reduce vom Client. Job Tracker spricht mit dem Namensknoten, um den Speicherort der Daten zu erfahren, die bei der Verarbeitung verwendet werden. Der Name Node antwortet mit den Metadaten der benötigten Verarbeitungsdaten.

Task Tracker: Es ist der Slave-Knoten für den Job Tracker und übernimmt die Aufgabe vom Job Tracker. Es erhält auch Code vom Job Tracker. Task Tracker nimmt den Code und wendet ihn auf die Datei an. Das Anwenden dieses Codes auf die Datei wird als Mapper bezeichnet.

Der Hadoop-Cluster hat nominell einen einzelnen Namensknoten plus einen Cluster von Datenknoten, obwohl für den Namensknoten aufgrund seiner Kritikalität Redundanzoptionen verfügbar sind. Jeder Datenknoten stellt Datenblöcke über das Netzwerk bereit, wobei ein für HDFS spezifisches Blockprotokoll verwendet wird. Das Dateisystem verwendet TCP/IP- Sockets für die Kommunikation. Clients verwenden Remote Procedure Calls (RPC), um miteinander zu kommunizieren.

HDFS speichert große Dateien (normalerweise im Bereich von Gigabyte bis Terabyte) auf mehreren Computern. Es erreicht Zuverlässigkeit, indem es die Daten über mehrere Hosts repliziert , und erfordert daher theoretisch keinen redundanten Array of Independent Disks (RAID) -Speicher auf den Hosts (aber um die Input-Output (I/O)-Leistung zu erhöhen, sind einige RAID-Konfigurationen immer noch nützlich). Mit dem Standardreplikationswert 3 werden Daten auf drei Knoten gespeichert: zwei auf demselben Rack und einer auf einem anderen Rack. Datenknoten können miteinander kommunizieren, um Daten neu auszubalancieren, Kopien zu verschieben und die Datenreplikation hoch zu halten. HDFS ist nicht vollständig POSIX-kompatibel, da sich die Anforderungen an ein POSIX-Dateisystem von den Zielvorgaben einer Hadoop-Anwendung unterscheiden. Der Kompromiss, kein vollständig POSIX-kompatibles Dateisystem zu haben, ist eine höhere Leistung für den Datendurchsatz und die Unterstützung von Nicht-POSIX-Operationen wie Append.

Im Mai 2012 wurde HDFS um Hochverfügbarkeitsfunktionen erweitert, die es dem Hauptmetadatenserver namens NameNode ermöglichen, manuell auf ein Backup umzuschalten. Das Projekt hat auch damit begonnen, automatische Failover zu entwickeln .

Das HDFS-Dateisystem enthält einen sogenannten sekundären Namensknoten , ein irreführender Begriff, den manche fälschlicherweise als Backup-Namensknoten interpretieren könnten, wenn der primäre Namensknoten offline geht. Tatsächlich verbindet sich der sekundäre Namensknoten regelmäßig mit dem primären Namensknoten und erstellt Schnappschüsse der Verzeichnisinformationen des primären Namensknotens, die das System dann in lokalen oder entfernten Verzeichnissen speichert. Diese Bilder mit Prüfpunkt können verwendet werden, um einen ausgefallenen primären Namensknoten neu zu starten, ohne das gesamte Journal der Dateisystemaktionen erneut abspielen zu müssen, und dann das Protokoll zu bearbeiten, um eine aktuelle Verzeichnisstruktur zu erstellen. Da der Namenode der zentrale Punkt für die Speicherung und Verwaltung von Metadaten ist, kann er bei der Unterstützung einer großen Anzahl von Dateien, insbesondere einer großen Anzahl kleiner Dateien, zu einem Engpass werden. HDFS Federation, eine neue Ergänzung, zielt darauf ab, dieses Problem bis zu einem gewissen Grad anzugehen, indem mehrere Namespaces von separaten Namenodes bedient werden. Darüber hinaus gibt es einige Probleme in HDFS wie kleine Dateiprobleme, Skalierbarkeitsprobleme, Single Point of Failure (SPoF) und Engpässe bei riesigen Metadatenanforderungen. Ein Vorteil der Verwendung von HDFS ist das Datenbewusstsein zwischen dem Job-Tracker und dem Task-Tracker. Der Job-Tracker plant die Zuordnung oder Reduzierung von Jobs zu Task-Trackern mit Kenntnis des Datenspeicherorts. Beispiel: Wenn Knoten A Daten (a, b, c) enthält und Knoten X Daten (x, y, z) enthält, plant der Job-Tracker Knoten A, um Zuordnungs- oder Reduktionsaufgaben auf (a, b, c) und Knoten auszuführen X wäre so geplant, dass es Map- oder Reduce-Aufgaben auf (x, y, z) ausführt. Dies reduziert den Datenverkehr, der über das Netzwerk geht, und verhindert unnötige Datenübertragungen. Wenn Hadoop mit anderen Dateisystemen verwendet wird, ist dieser Vorteil nicht immer verfügbar. Dies kann einen erheblichen Einfluss auf die Job-Erledigungszeiten haben, wie es bei datenintensiven Jobs gezeigt wurde.

HDFS wurde für größtenteils unveränderliche Dateien entwickelt und ist möglicherweise nicht für Systeme geeignet, die gleichzeitige Schreibvorgänge erfordern.

HDFS kann direkt mit einem virtuellen Dateisystem Filesystem in Userspace (FUSE) unter Linux und einigen anderen Unix- Systemen gemountet werden.

Der Dateizugriff kann über die native Java-API, die Thrift- API (erzeugt einen Client in einer Reihe von Sprachen, z. B. C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa , Smalltalk und OCaml ), erreicht werden. die Befehlszeilenschnittstelle , die HDFS-UI- Webanwendung über HTTP oder über Netzwerkclientbibliotheken von Drittanbietern.

HDFS wurde für die Portabilität über verschiedene Hardwareplattformen und für die Kompatibilität mit einer Vielzahl von zugrunde liegenden Betriebssystemen entwickelt. Das HDFS-Design führt Portabilitätseinschränkungen ein, die zu einigen Leistungsengpässen führen, da die Java-Implementierung keine Funktionen verwenden kann, die ausschließlich für die Plattform gelten, auf der HDFS ausgeführt wird. Aufgrund der weit verbreiteten Integration in die Infrastruktur auf Unternehmensebene ist die Überwachung der HDFS-Leistung in großem Maßstab zu einem immer wichtigeren Thema geworden. Die Überwachung der End-to-End-Leistung erfordert Verfolgungsmetriken von Datenknoten, Namensknoten und dem zugrunde liegenden Betriebssystem. Derzeit gibt es mehrere Überwachungsplattformen, um die HDFS-Leistung zu verfolgen, darunter Hortonworks , Cloudera und Datadog .

Andere Dateisysteme

Hadoop funktioniert direkt mit jedem verteilten Dateisystem, das vom zugrunde liegenden Betriebssystem durch einfache Verwendung einer file://URL gemountet werden kann . Dies hat jedoch seinen Preis – den Verlust der Lokalität. Um den Netzwerkverkehr zu reduzieren, muss Hadoop wissen, welche Server den Daten am nächsten sind, Informationen, die Hadoop-spezifische Dateisystembrücken bereitstellen können.

Im Mai 2011 lautete die Liste der unterstützten Dateisysteme, die mit Apache Hadoop gebündelt sind:

  • HDFS: Hadoops eigenes Rack-fähiges Dateisystem. Dies ist so konzipiert , dass es auf mehrere Dutzend Petabyte Speicher skaliert und auf den Dateisystemen der zugrunde liegenden Betriebssysteme ausgeführt wird .
  • Apache Hadoop Ozone: HDFS-kompatibles Objektspeicher-Targeting, optimiert für Milliarden kleiner Dateien.
  • FTP- Dateisystem: Dieses speichert alle seine Daten auf remote zugänglichen FTP-Servern.
  • Amazon S3 (Simple Storage Service) -Objektspeicher: Dies ist auf Cluster ausgerichtet, die auf der Server-on-Demand-Infrastruktur von Amazon Elastic Compute Cloud gehostet werden. Es gibt keine Rack-Awareness in diesem Dateisystem, da alles remote ist.
  • Windows Azure Storage Blobs (WASB)-Dateisystem: Dies ist eine Erweiterung von HDFS, die es Hadoop-Verteilungen ermöglicht, auf Daten in Azure-Blobspeichern zuzugreifen, ohne die Daten dauerhaft in den Cluster zu verschieben.

Es wurden auch eine Reihe von Dateisystembrücken von Drittanbietern geschrieben, von denen derzeit keine in Hadoop-Distributionen enthalten ist. Einige kommerzielle Distributionen von Hadoop werden jedoch standardmäßig mit einem alternativen Dateisystem ausgeliefert – insbesondere IBM und MapR .

  • Im Jahr 2009 diskutierte IBM die Ausführung von Hadoop über das IBM General Parallel File System . Der Quellcode wurde im Oktober 2009 veröffentlicht.
  • Im April 2010 veröffentlichte Parascale den Quellcode, um Hadoop für das Parascale-Dateisystem auszuführen.
  • Im April 2010 veröffentlichte Appistry einen Hadoop-Dateisystemtreiber zur Verwendung mit seinem eigenen CloudIQ-Speicherprodukt.
  • Im Juni 2010 diskutierte HP einen standortabhängigen IBRIX Fusion- Dateisystemtreiber.
  • Im Mai 2011 gab MapR Technologies Inc. die Verfügbarkeit eines alternativen Dateisystems für Hadoop, MapR FS , bekannt, das das HDFS-Dateisystem durch ein vollständiges Lese-/Schreib-Dateisystem mit wahlfreiem Zugriff ersetzt.

JobTracker und TaskTracker: die MapReduce-Engine

Auf den Dateisystemen kommt die MapReduce Engine, die aus einem JobTracker besteht , an den Client-Anwendungen MapReduce-Jobs senden. Der JobTracker schiebt Arbeit an verfügbare TaskTracker- Knoten im Cluster und versucht, die Arbeit so nah wie möglich an den Daten zu halten. Mit einem rackfähigen Dateisystem weiß der JobTracker, welcher Knoten die Daten enthält und welche anderen Maschinen sich in der Nähe befinden. Wenn die Arbeit nicht auf dem tatsächlichen Knoten gehostet werden kann, auf dem sich die Daten befinden, wird Knoten im selben Rack Priorität eingeräumt. Dadurch wird der Netzwerkverkehr im Haupt-Backbone-Netzwerk reduziert. Wenn ein TaskTracker fehlschlägt oder das Zeitlimit überschreitet, wird dieser Teil des Jobs neu geplant. Der TaskTracker auf jedem Knoten erzeugt einen separaten Java Virtual Machine (JVM)-Prozess, um zu verhindern, dass der TaskTracker selbst fehlschlägt, wenn der ausgeführte Job seine JVM abstürzt. Alle paar Minuten wird ein Heartbeat vom TaskTracker an den JobTracker gesendet, um seinen Status zu überprüfen. Der Status und die Informationen von Job Tracker und TaskTracker werden von Jetty angezeigt und können über einen Webbrowser angezeigt werden.

Bekannte Einschränkungen dieses Ansatzes sind:

  1. Die Zuordnung von Arbeit zu TaskTrackern ist sehr einfach. Jeder TaskTracker hat eine Reihe von verfügbaren Slots ( zB "4 Slots"). Jede aktive Karten- oder Reduktionsaufgabe nimmt einen Slot ein. Der Job Tracker ordnet Arbeit dem Tracker zu, der den Daten mit einem verfügbaren Slot am nächsten liegt. Die aktuelle Systemlast der zugeordneten Maschine und damit deren tatsächliche Verfügbarkeit wird nicht berücksichtigt .
  2. Wenn ein TaskTracker sehr langsam ist, kann er den gesamten MapReduce-Job verzögern – insbesondere gegen Ende, wenn alles auf die langsamste Aufgabe warten kann. Bei aktivierter spekulativer Ausführung kann jedoch eine einzelne Aufgabe auf mehreren Slave-Knoten ausgeführt werden.

Terminplanung

Hadoop verwendet standardmäßig die FIFO- Planung und optional 5 Planungsprioritäten, um Jobs aus einer Arbeitswarteschlange zu planen. In Version 0.19 wurde der Job-Scheduler aus dem JobTracker heraus umgestaltet, während die Möglichkeit hinzugefügt wurde, einen alternativen Scheduler zu verwenden (wie den Fair-Scheduler oder den Capacity-Scheduler , der im Folgenden beschrieben wird).

Messeplaner

Der Messeplaner wurde von Facebook entwickelt . Ziel des Messeplaners sind schnelle Reaktionszeiten bei kleinen Aufträgen und Quality of Service (QoS) bei Produktionsaufträgen. Der Messeplaner hat drei Grundkonzepte.

  1. Jobs werden in Pools gruppiert .
  2. Jedem Pool wird ein garantierter Mindestanteil zugewiesen.
  3. Überkapazitäten werden auf Jobs aufgeteilt.

Standardmäßig werden Jobs, die nicht kategorisiert sind, in einen Standardpool aufgenommen. Pools müssen die Mindestanzahl von Karten-Slots angeben, Slots reduzieren sowie die Anzahl der laufenden Jobs begrenzen.

Kapazitätsplaner

Der Kapazitätsplaner wurde von Yahoo entwickelt. Der Kapazitäts-Scheduler unterstützt mehrere Funktionen, die denen des Messe-Schedulers ähnlich sind.

  1. Warteschlangen wird ein Bruchteil der gesamten Ressourcenkapazität zugewiesen.
  2. Freie Ressourcen werden Warteschlangen zugewiesen, die ihre Gesamtkapazität überschreiten.
  3. Innerhalb einer Warteschlange hat ein Job mit hoher Priorität Zugriff auf die Ressourcen der Warteschlange.

Es gibt keine Präemption, sobald ein Job ausgeführt wird.

Unterschied zwischen Hadoop 1 und Hadoop 2 (YARN)

Der größte Unterschied zwischen Hadoop 1 und Hadoop 2 ist das Hinzufügen von YARN (Yet Another Resource Negotiator), das die MapReduce-Engine in der ersten Version von Hadoop ersetzt hat. YARN ist bestrebt, Ressourcen effektiv verschiedenen Anwendungen zuzuweisen. Es führt zwei Dmons aus, die sich um zwei verschiedene Aufgaben kümmern: den Ressourcenmanager , der die Auftragsverfolgung und Ressourcenzuweisung an Anwendungen durchführt, den Anwendungsmaster , der den Fortschritt der Ausführung überwacht.

Unterschied zwischen Hadoop 2 und Hadoop 3

Hadoop 3 bietet wichtige Funktionen. Während beispielsweise Hadoop 2 einen einzigen Namensknoten enthält , ermöglicht Hadoop 3 mehrere Namensknoten , wodurch das Problem des Single Point of Failure gelöst wird.

In Hadoop 3 gibt es Container, die im Prinzip nach Docker 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 .

Außerdem ermöglicht Hadoop 3 die Verwendung von GPU-Hardware innerhalb des Clusters, was ein sehr wesentlicher Vorteil bei der Ausführung von Deep-Learning-Algorithmen auf einem Hadoop-Cluster ist.

Andere Anwendungen

Das HDFS ist nicht auf MapReduce-Jobs beschränkt. Es kann für andere Anwendungen verwendet werden, von denen viele bei Apache entwickelt werden. Die Liste umfasst die HBase- Datenbank, das maschinelle Lernsystem Apache Mahout und das Apache Hive Data Warehouse . Theoretisch könnte Hadoop für jeden Batch-orientierten und nicht in Echtzeit arbeitenden Workload verwendet werden, der sehr datenintensiv ist und von der parallelen Verarbeitung profitiert . Es kann auch verwendet werden, um ein Echtzeitsystem wie Lambda-Architektur , Apache Storm , Flink und Spark Streaming zu ergänzen .

Kommerzielle Anwendungen von Hadoop umfassen:

  • Log- oder Clickstream- Analyse
  • Marketinganalysen
  • Maschinelles Lernen und Data Mining
  • Bildverarbeitung
  • Verarbeitung von XML- Nachrichten
  • Web-Crawling
  • Archivierungsarbeit für Compliance, einschließlich relationaler und tabellarischer Daten

Prominente Anwendungsfälle

Am 19. Februar 2008 hat Yahoo! Inc. brachte die angeblich weltweit größte Hadoop-Produktionsanwendung auf den Markt. Die Yahoo! Search Webmap ist eine Hadoop-Anwendung, die auf einem Linux-Cluster mit mehr als 10.000 Kernen läuft und Daten erzeugt, die in jedem Yahoo! Abfrage der Websuche. Es gibt mehrere Hadoop-Cluster bei Yahoo! und keine HDFS-Dateisysteme oder MapReduce-Jobs werden auf mehrere Rechenzentren aufgeteilt. Jeder Hadoop-Clusterknoten bootet das Linux-Image, einschließlich der Hadoop-Distribution. Die von den Clustern durchgeführte Arbeit umfasst bekanntermaßen die Indexberechnungen für die Yahoo! Suchmaschine. Im Juni 2009 hat Yahoo! hat den Quellcode seiner Hadoop-Version der Open-Source-Community zur Verfügung gestellt.

Im Jahr 2010 behauptete Facebook, mit 21 PB Speicher den größten Hadoop-Cluster der Welt zu haben . Im Juni 2012 gaben sie bekannt, dass die Daten auf 100 PB angewachsen waren, und später im Jahr gaben sie bekannt, dass die Daten um etwa ein halbes PB pro Tag gewachsen sind.

Ab 2013 war die Einführung von Hadoop weit verbreitet: Mehr als die Hälfte der Fortune-50-Unternehmen nutzten Hadoop.

Hadoop-Hosting in der Cloud

Hadoop kann sowohl in einem traditionellen Rechenzentrum vor Ort als auch in der Cloud bereitgestellt werden . Die Cloud ermöglicht es Unternehmen, Hadoop bereitzustellen, ohne Hardware oder spezielles Setup-Know-how erwerben zu müssen.

Kommerzielle Unterstützung

Eine Reihe von Unternehmen bietet kommerzielle Implementierungen oder Support für Hadoop an.

Markenzeichen

Die Apache Software Foundation hat erklärt, dass nur Software, die offiziell vom Apache Hadoop Project veröffentlicht wurde, als Apache Hadoop oder Distributionen von Apache Hadoop bezeichnet werden kann . Die Benennung von Produkten und abgeleiteten Werken anderer Anbieter und der Begriff "kompatibel" sind in der Hadoop-Entwicklergemeinschaft etwas umstritten.

Papiere

Einige Veröffentlichungen beeinflussten die Geburt und das Wachstum von Hadoop und der Big-Data-Verarbeitung. Einige davon sind:

Siehe auch

Verweise

Literaturverzeichnis

Externe Links