hadoop aus it-operations-sicht - teil 1 (hadoop-grundlagen)
TRANSCRIPT
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
Hadoop aus IT-Operations Sicht – Teil 1Hadoop-Grundlagen
Brownbag am Freitag, den 26.07.2013
Daniel Bäurerinovex GmbHSystems Engineer
22.05.14
Inhalt
● Was ist Hadoop?
● Die Basis von Hadoop – Common
● Die Basis von Hadoop – HDFS, NameNode und DataNode
● Das Programmiermodell MapReduce
● Das MapReduce Framework – JobTracker und TaskTracker
22.05.14
Was ist Hadoop?
HADOOP
HDFS
MapReduce
Flume
Sqoop
HCatalog
Hue
Hive
Pig
HBase
Zookeeper
Oozie
Whirr
Snappy
Mahout
Chukwa
Cloudera
HortonworksMapR
NameNode DataNode
JobTrackerTaskTracker
22.05.14
Was ist Hadoop?
● Hadoop ist ein auf Java basierendes Framework.
● Hadoop ist die Basis für eine Vielzahl weiterer Software-Produkte („Hadoop Eco-System“).
● Hadoop ist für die Verarbeitung sehr großer Datenmengen ausgelegt.
● Hadoop kann Daten und Rechenoperationen auf viele Rechner verteilen.
● Hadoop kann mit wachsenden (schrumpfenden) Daten oder Rechenoperationen skalieren.
● Zusammengefasst:
„Hadoop ist ein freies, Java-basiertes Open-Source-Framework für die skalierbare und verteilte Verarbeitung großer Datenmengen auf vielen Rechnern innerhalb eines Netzwerks.“Wartala, Ramon: Hadoop - Zuverlässig, verteilte und skalierbare Big-Data-Anwendungen. München 2012, S. 21
22.05.14
Die Basis von Hadoop – Common
HADOOP
HDFS
MapReduce
Flume
Sqoop
HCatalog
Hue
Hive
Pig
HBase
Zookeeper
Oozie
Whirr
Snappy
Mahout
Chukwa
Cloudera
HortonworksMapR
NameNode DataNode
JobTrackerTaskTracker
22.05.14
Die Basis von Hadoop – Common
● Hadoop Common stellt Grundfunktionen bereit.
● Beispielsweise:
● Eine implementierungsneutrale Dateisystem-Schnittstelle.
● Eine RPC („Remote-Procedure-Call“) Schnittstelle zur Kommunikation im Rechnerverbund (Cluster).
● Bibliotheken zur Serialisierung von Daten.
● Werkzeuge und Bibliotheken die von anderen Hadoop Komponenten (oder Software-Produkten) genutzt werden.
22.05.14
Die Basis von Hadoop – HDFS, NameNode und DataNode
HADOOP
HDFS
MapReduce
Flume
Sqoop
HCatalog
Hue
Hive
Pig
HBase
Zookeeper
Oozie
Whirr
Snappy
Mahout
Chukwa
Cloudera
HortonworksMapR
NameNode DataNode
JobTrackerTaskTracker
22.05.14
Die Basis von Hadoop – HDFS, NameNode und DataNode
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 10
HDFS-Architektur
22.05.14
Die Basis von Hadoop – HDFS
● HDFS („Hadoop Distributed File System“) ist ein skalierbares und verteiltes Dateisystem.
● HDFS ist das Standard-Dateisystem von Hadoop.
● HDFS folgt in den wesentlichen Eigenschaften dem „Google File System“:
● Der Ausfall von Knoten kann passieren und wird als „nicht kritisch“ betrachtet.
● Das Hinzufügen von weiteren Knoten ist sehr einfach.
● Es werden sehr große Dateien gespeichert.
● Dateien werden nur einmal geschrieben aber häufig gelesen.
● Der Aufbau eines Clusters folgt dem Master-Slave-Prinzip.
● Die Speicherung von Dateien erfolgt blockorientiert.
22.05.14
Die Basis von Hadoop – HDFS
● Die zu speichernden Dateien werden in Blöcke mit fester Größe aufgeteilt.
● Die Blockgröße von HDFS beträgt standardmäßig 64 MB (kann aber bis zu 1 GB konfiguriert werden).
● Aufgrund der Blockgrößen werden die Daten in größeren zusammenhängenden Stücken auf die Platten geschrieben, was die Schreib- und Leseoperationen positiv beeinflusst.
● Standardmäßig wird ein Block im HDFS dreifach, auf unterschiedlichen Knoten, repliziert.
● Zusätzlich können Blöcke auch über Knoten in verschiedenen Serverschränken verteilt werden („Rack-Awareness“).
22.05.14
Die Basis von Hadoop – NameNode
● Der NameNode ist der Master im HDFS der über alle Metadaten des Dateisystems verfügt.
● Der NameNode ist die zentrale Anlaufstelle wenn Lese- oder Schreiboperationen im HDFS durchgeführt werden sollen.
● Der NameNode stellt sicher das Blöcke verteilt und repliziert werden.
● Der NameNode kennt alle Verzeichnisse und Dateien.
● Der NameNode kennt weiterhin
● alle Aufteilungen Datei → Block
● alle Speicherorte Block → Knoten
● alle Repliken Block → Knoten
22.05.14
Die Basis von Hadoop – NameNode
● Der NameNode hält alle HDFS-Metadaten im Speicher (RAM) vor um sehr schnell etwaige Anfragen verarbeiten zu können.
● Die HDFS-Metadaten (Datei → Block) werden auf dem lokalen System des NameNode persistiert (nicht aber Block → Knoten).
● Die Persistierung erfolgt ähnliche dem WAL-Prinzip („Write Ahead Log“).
● Die Zusammenführung der „Write-Ahead-Logs“ zu einem konsistenten Speicherabbild wird vom Secondary NameNode in regelmäßigen Abständen durchgeführt.
● Der Secondary NameNode stellt lediglich eine Art „Housekeeper“ für den NameNode dar. Er kann nicht die Funktionen des NameNodes übernehmen!
22.05.14
Die Basis von Hadoop – DataNode
● Ein DataNode ist der Slave im HDFS der die ihm zugewiesenen Blöcke verwaltet.
● Ein DateNode kennt die Blöcke die er vorhält, nicht aber zu welcher Datei sie gehören.
● Ein DataNode verfügt über mehrere Festplatten die exklusiv für das HDFS zum speichern der Blöcke verwendet werden.
● Ein DataNode ist zuständig für den Transport der Blöcke und organisiert diesen dezentral.
● Ein DataNode sendet in regelmäßigen Abständen einen Block-Report an den NameNode, woraus dieser die Metadaten Block → Knoten herleitet.
● Ein DataNode sendet ebenfalls in regelmäßigen Abständen ein Lebenszeichen („Heartbeat“) an den NameNode.
22.05.14
Die Basis von Hadoop – HDFS, NameNode und DataNode
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 12
HDFS-Leseoperation
22.05.14
Die Basis von Hadoop – HDFS, NameNode und DataNode
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 14
HDFS-Schreiboperation
22.05.14
Die Basis von Hadoop – NameNode
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 16
Secondary NameNode „Housekeeping“
22.05.14
Das Programmiermodell MapReduce
HADOOP
HDFS
MapReduce
Flume
Sqoop
HCatalog
Hue
Hive
Pig
HBase
Zookeeper
Oozie
Whirr
Snappy
Mahout
Chukwa
Cloudera
HortonworksMapR
NameNode DataNode
JobTrackerTaskTracker
22.05.14
Das Programmiermodell MapReduce
● MapReduce ist ein von Google entwickeltes Programmiermodell, dass aus den Funktionen map() und reduce() Funktionaler Sprachen inspiriert wurde.
● Hierbei wird der Funktion map() eine Funktion als Parameter übergeben, die auf alle Werte einer Liste angewandt wird und als Resultat eine Liste zurück gibt.
● Die reduce()-Funktion wiederum erhält diese aus der map()-Funktion resultierenden Liste als Parameter und reduziert diese anhand einer gegebenen Funktion auf einen Wert.
● Python-Beispiel:
>>> def f(x): return x+x>>> def g(x,y): return x+y>>> map(f, [1,2,3,4])>>> [2,4,6,8]>>> reduce(g, map(f, [1,2,3,4]))>>> 20
22.05.14
Das Programmiermodell MapReduce
● Beim MapReduce-Programmiermodell entspricht die Map-Funktion der Funktion, die der map()-Funktion Funktionaler Sprachen übergeben wird. Die Reduce-Funktion von MapReduce legt die Art der Aggregation fest.
● MapReduce-Definition:
Map: K x V → (L x W)*Reduce: L x W* → X*
● MapReduce-Konzept:
● In der ersten Phase (Map) werden einzelne Key/Value-Paare verarbeitet die als Ergebnis eine Menge weiterer Key/Value-Paare liefert (Zwischenergebnis).
● In der zweiten Phase (Reduce) werden die aus der ersten Phase entstandenen Zwischenergebnisse anhand eines Keys aggregiert und als Ergebnis zurückgeliefert.
22.05.14
Das Programmiermodell MapReduce
● Beispiel „Häufigkeit von Wörtern in Dokumenten“:
● Die Map-Funktion erhält als Eingabe Dateien (K), deren Inhalt (V) in Wörter aufgeteilt wird und somit die folgende Ausgabe (Zwischenergebnis) liefert:
Key l L: ∈ WortValue w W: ∈ 1
● Die Reduce-Funktion aggregiert nun alle Values für einen Key l L∈ und liefert das Ergebnis X für jeden l L∈ zurück.
● „Dies ist ein Beispiel ein Beispiel“
L: l1,w1 = Dies,1; l2,w2 = ist,1; l3,w3 = ein,1; l4,w4 = Beispiel,1; l5,w5 = ein,1; l6,w6 = Beispiel,1;
X: Dies = 1; ist = 1; ein = 2; Beispiel = 2;
22.05.14
Das Programmiermodell MapReduce
● Für was ist MapReduce geeignet?
● MapReduce ist für Aufgaben geeignet, deren Eingabemenge sich in Teilstücke partitionieren lassen.
● Hierdurch können die Teilstücke unabhängig voneinander bearbeitet werden.
● Weiterhin eignet sich MapReduce zur Verarbeitung von unstrukturierten Eingangsdaten.
● Hierdurch können die Eingangsdaten mit verschiedenen Aufgaben verarbeitet werden.
● Entsprechend ungeeignet für MapReduce sind Aufgaben, deren Eingabemenge als Ganzes durch Abhängigkeiten nicht partitionierbar sind.
22.05.14
Das MapReduce Framework – JobTracker und TaskTracker
HADOOP
HDFS
MapReduce
Flume
Sqoop
HCatalog
Hue
Hive
Pig
HBase
Zookeeper
Oozie
Whirr
Snappy
Mahout
Chukwa
Cloudera
HortonworksMapR
NameNode DataNode
JobTrackerTaskTracker
22.05.14
Das MapReduce Framework
● Neben dem Programmiermodell, das als MapReduce bezeichnet wird, werden auch die spezifischen Implementierungen des Software-Frameworks als MapReduce bezeichnet.
● Das MapReduce-Framework ist für die Verarbeitung großer und verteilter Datenmengen ausgelegt.
● Es werden so genannte „Jobs“ entwickelt, die im wesentlichen aus Map- und Reduce-Funktionen bestehen.
● Das Framework übernimmt hierbei sämtliche Aufgaben, von der Verteilung der Jobs, der Parallelisierung und Planung der Einzelschritte bis hin zur Fehlerbehandlung.
● MapReduce ist ein System das für die Stapelverarbeitung („Batch“) ausgelegt ist.
● MapReduce verfolgt die Strategie, Berechnung auf den Knoten auszuführen auf denen die Daten liegen („Locality of Reference“).
22.05.14
Das MapReduce Framework – JobTracker
● Der JobTracker ist der Master im MapReduce-Framework und nimmt die Jobs der Clients an.
● Der JobTracker verfügt über die Informationen welche Slave-Knoten aktiv sind und aktuell Tasks ausführen können.
● Der JobTracker plant Tasks und überwacht diese auf den einzelnen Slave-Knoten (Worker).
● Equivalent zum HDFS NameNode werden sämtliche Tasks und Job-Informationen im Speicher vorgehalten.
22.05.14
Das MapReduce Framework – TaskTracker
● Ein TaskTracker ist der Slave im MapReduce-Framework und verarbeitet die vom JobTracker im zugewiesenen Tasks.
● Ein TaskTracker meldet periodisch den Task-Status dem JobTracker zurück.
● Ein TaskTracker läuft immer auf einem DataNode um die zu verarbeitenden Daten lokal auslesen zu können.
● Ein TaskTracker bietet eine gewisse Anzahl an Map- und Reduce-Slots an, die dem JobTracker gemeldet werden.
22.05.14
Das MapReduce Framework – JobTracker und TaskTracker
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 29
Map-Phase
22.05.14
Das MapReduce Framework – JobTracker und TaskTracker
Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 31
Reduce-Phase
22.05.14
Vielen Dank für Ihre Aufmerksamkeit!
inovex GmbH
PforzheimKarlsruher Straße 71D-75179 Pforzheim
MünchenValentin-Linhof-Straße 2D-81829 München
KölnSchanzenstraße 6-20D-51063 Köln