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

Post on 10-Jul-2015

224 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

top related