hadoop aus it-operations-sicht - teil 1 (hadoop-grundlagen)

28
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. Hadoop aus IT-Operations Sicht – Teil 1 Hadoop-Grundlagen Brownbag am Freitag, den 26.07.2013 Daniel Bäurer inovex GmbH Systems Engineer

Upload: inovex-gmbh

Post on 10-Jul-2015

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 2: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 3: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 4: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 5: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 6: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 7: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 8: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Die Basis von Hadoop – HDFS, NameNode und DataNode

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 10

HDFS-Architektur

Page 9: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 10: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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“).

Page 11: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 12: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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!

Page 13: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 14: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Die Basis von Hadoop – HDFS, NameNode und DataNode

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 12

HDFS-Leseoperation

Page 15: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Die Basis von Hadoop – HDFS, NameNode und DataNode

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 14

HDFS-Schreiboperation

Page 16: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Die Basis von Hadoop – NameNode

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 16

Secondary NameNode „Housekeeping“

Page 17: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 18: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 19: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 20: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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;

Page 21: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 22: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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

Page 23: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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“).

Page 24: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 25: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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.

Page 26: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Das MapReduce Framework – JobTracker und TaskTracker

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 29

Map-Phase

Page 27: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

22.05.14

Das MapReduce Framework – JobTracker und TaskTracker

Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 31

Reduce-Phase

Page 28: Hadoop aus IT-Operations-Sicht - Teil 1 (Hadoop-Grundlagen)

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