• Like

Thanks for flagging this SlideShare!

Oops! An error has occurred.

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

  • 163 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
163
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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
  • 2. 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
  • 3. 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 JobTracker TaskTracker
  • 4. 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
  • 5. 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 JobTracker TaskTracker
  • 6. 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.
  • 7. 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 JobTracker TaskTracker
  • 8. 22.05.14 Die Basis von Hadoop – HDFS, NameNode und DataNode Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 10 HDFS-Architektur
  • 9. 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.
  • 10. 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“).
  • 11. 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
  • 12. 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!
  • 13. 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.
  • 14. 22.05.14 Die Basis von Hadoop – HDFS, NameNode und DataNode Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 12 HDFS-Leseoperation
  • 15. 22.05.14 Die Basis von Hadoop – HDFS, NameNode und DataNode Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 14 HDFS-Schreiboperation
  • 16. 22.05.14 Die Basis von Hadoop – NameNode Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 16 Secondary NameNode „Housekeeping“
  • 17. 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 JobTracker TaskTracker
  • 18. 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
  • 19. 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.
  • 20. 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:∈ Wort Value 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;
  • 21. 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. 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 JobTracker TaskTracker
  • 23. 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“).
  • 24. 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.
  • 25. 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.
  • 26. 22.05.14 Das MapReduce Framework – JobTracker und TaskTracker Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 29 Map-Phase
  • 27. 22.05.14 Das MapReduce Framework – JobTracker und TaskTracker Sammer, Eric: Hadoop Operations. Sebastopol 2012, S. 31 Reduce-Phase
  • 28. 22.05.14 Vielen Dank für Ihre Aufmerksamkeit! inovex GmbH Pforzheim Karlsruher Straße 71 D-75179 Pforzheim München Valentin-Linhof-Straße 2 D-81829 München Köln Schanzenstraße 6-20 D-51063 Köln