48
© Mayflower GmbH 2010 Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop Thomas Steur I 19. August 2010

Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Embed Size (px)

Citation preview

Page 1: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

© Mayflower GmbH 2010

Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Thomas Steur I 19. August 2010

Page 2: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 2

Vorführender
Präsentationsnotizen
Was meine ich mit riesigen Datenmengen? Hunderte von Giga- / Tera- / Peta-Bytes
Page 3: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 3

Nachteile von zum Beispiel

RDBMS

Page 4: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 4

teuer

Vorführender
Präsentationsnotizen
Benötigt werden: viele schnelle Festplatten viele Cores viel Ram Dazu gleiches Failover System
Page 5: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 5

skalieren

Vorführender
Präsentationsnotizen
Besserung bringt zum Beispiel: Memcached Partitionierung … Skaliert im gesamten aber nicht so gut
Page 6: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 6

Vorführender
Präsentationsnotizen
Hier kommt hadoop ins Spiel
Page 7: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 7

Hä?

Vorführender
Präsentationsnotizen
Aber was bitte ist Hadoop? Hadoop ist ein Java-Framework Hadoop ist ein Apache Top-Level Projekt Open Source Was soll man sich darunter vorstellen?
Page 8: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 8

läuft auf handelsüblichen

Computern

Vorführender
Präsentationsnotizen
Ist vergleichsweise günstig (zum Beispiel normale 7200k Festplatten, 4 Cores, 4GB RAM) Performance wird erziehlt durch die Menge an Nodes
Page 9: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 9

skaliert

Vorführender
Präsentationsnotizen
Vorteil von Hadoop ist, dass es auf hunderte und tausende Nodes sehr gut skaliert Wird nachher noch mehr im Detail erklärt
Page 10: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 10

verarbeitet große Datenmengen...

… sehr große Datenmengen

Vorführender
Präsentationsnotizen
verarbeitet sehr große Datenmengen effizient, verteilt über viele Nodes sehr große Datenmengen heißt hunderte von Giga-, Tera- oder Peta-Bytes hat 2008 und 2009 den Terabyte Sort Benchmark gewonnen schnellste Implementierung um sehr große Datenmengen (aktuell 100 Terabyte Integer) verteilt zu sortieren
Page 11: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 11

skaliert sehr gut

Verarbeiten von riesigen Datenmengen

redundant

Vorführender
Präsentationsnotizen
Daten werden redundant abgelegt
Page 12: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 12

Cluster

Vorführender
Präsentationsnotizen
Oft mehrere Hadoop Cluster die je aus tausende von Nodes bestehen Fehler liegen hier an der Tagesordnung Es wird sehr viel Wert auf eine hohe Fehlertoleranz gelegt
Page 13: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 13

Nicht geeignet für ...

Vorführender
Präsentationsnotizen
kleine Datenmengen bei Einsatz nur auf einer Node Alternativen sind zum Beispiel Gearman
Page 14: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 14

AmazonFacebookGoogleTwitterYahoo!

...

Vorführender
Präsentationsnotizen
Hadoop ist unter anderem im Einsatz bei: Amazon Facebook Google Twitter Yahoo! und viele mehr... http://wiki.apache.org/hadoop/PoweredBy
Page 15: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 15

Vorführender
Präsentationsnotizen
Beispiel Facebook
Page 16: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 16

36 PB == 479 Jahre HDTV

Vorführender
Präsentationsnotizen
36 PB an Daten Das entspricht 479 Jahre HDTV Zu 90% wird HBase eingesetzt
Page 17: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 17

weitere ~90 TB pro Tag

Vorführender
Präsentationsnotizen
Weitere 90 TB pro Tag kommen dazu
Page 18: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 18

2.250 Nodes

> 23.000 Cores

Vorführender
Präsentationsnotizen
Dafür setzt Facebook 2.250 Nodes mit insgesamt mehr als 23.000 Cores ein.
Page 19: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 19

Vorführender
Präsentationsnotizen
Beispiel Yahoo
Page 20: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 20

38.000 Nodes

~ 20 Cluster

12 TB Speicher pro Node

Vorführender
Präsentationsnotizen
Größtes Hadoop Cluster
Page 21: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 21

600 Mio Page Impressions täglich

Vorführender
Präsentationsnotizen
Bei jedem einzelnen Seitenaufruf wird Hadoop angestoßen Click Stream Analyse → was mag der User Persönliches Ranking nach ca. 7 Minuten komplett angepasst Weitere Anwendungen zum Beispiel beim Spam Filter
Page 22: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 22

Und ich?

Vorführender
Präsentationsnotizen
Wo kann ich Hadoop verwenden? Was bringt mir Hadoop? Logs verarbeiten Statistiken Click Stream Analyse Zielgruppen gerechte Werbung Konvertieren von Video / Bilder Suche Bio Informatik Graphen Simulationen Web Index „Leute die du vielleicht kennst“ „Leute die diesen Artikel angeschaut haben, haben auch diese Artikel angeschaut“
Page 23: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 23

Und wie?

Vorführender
Präsentationsnotizen
Selber ein Cluster aufsetzen Amazon Elastic MapReduce ...
Page 24: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 24

HDFS(Hadoop Distributed File System)

Vorführender
Präsentationsnotizen
speichert große Dateien verteilt über viele Nodes
Page 25: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 25

teilt eine Datei in viele Chunks

Vorführender
Präsentationsnotizen
Eine Datei wird nicht auf einer einzelnen Node gespeichert sondern gesplittet in viele kleine Chunks Aufsplitten in Chunks ermöglicht paralleles Verarbeiten der Daten Jeder Chunk wird redundant gespeichert
Page 26: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 26

64

Vorführender
Präsentationsnotizen
Standardmäßig wird jede Datei in 64 MB Blöcke gesplittet Alternativ empfiehlt sich ein vielfaches von 64MB
Page 27: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 27

3

Vorführender
Präsentationsnotizen
Jeder Chunk wird standardmäßig auf drei Nodes verteilt Zum Beispiel: 2 Chunks im gleichen Cluster 1 Chunk in einem anderen Cluster
Page 28: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 28

write once-

read often

Vorführender
Präsentationsnotizen
Daten werden einmal geschrieben und beliebig oft gelesen Vorteile sind: eine einfache Daten-Kohärenz ein sehr schneller Datendurchsatz effiziente und automatische Verteilung
Page 29: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

© Mayflower GmbH 2010

23.09.2010 Mayflower GmbH 29

Titel im Bild eintragen,allerdings nur wennmöglich!!!

Vorführender
Präsentationsnotizen
Aufbau besteht pro Cluster grundsätzlich aus einer Namenode und vielen Datanodes Auf den Datanodes werden die Chunks gespeichert Namenode verwaltet die Verteilung der Chunks Namenode speichert Metadaten für schnellen Zugriff im Hauptspeicher Namenode = single point of failure → daher Secondary Namenode
Page 30: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 30

MapReduce

Vorführender
Präsentationsnotizen
Programmiermodell/Framework um sehr schnell Applikationen zu schreiben, welche diese riesigen Mengen an Daten parallel verarbeiten MapReduce gibt es nicht nur bei Hadoop, zum Beispiel auch bei Gearman, CouchDB, ...
Page 31: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 31

nur 2 Methoden

Vorführender
Präsentationsnotizen
Entwickler hat sich nur um zwei Methoden "map" und "reduce" sowie um eine JobConfig zu kümmern. Alles weitere ist optional Ist einfach
Page 32: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

© Mayflower GmbH 2010

23.09.2010 Mayflower GmbH 32

Vorführender
Präsentationsnotizen
InputFormat – Beispiel Error Logs Jede DataNode kann - unabhängig von anderen Nodes - den jeweiligen Chunk verarbeiten Eine hohe Performance wird erreicht, indem die Berechnung zu den Daten gebracht wird Daten müssen nicht erst auf verschiedene Nodes zum Berechnen verteilt werden, was entsprechend dauern würde und Netzwerk-Bandbreite kostet
Page 33: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 33

function map ($filename, $content) {foreach (explode('', $content) as $word) {

collect($word, 1);}

}

function reduce($word, $values) {$numWordCount = 0;

foreach ($values as $value) {$numWordCount += $value;

}

collect($word, $numWordCount);}

Vorführender
Präsentationsnotizen
Grobe Visualisierung des Codes in PHP Syntax Beispiel map Funktion erhält einen Satz als value Einzelne Worte werden extrahiert und weitergegeben an Reducer Reducer wird benötigt um die Ergebnisse zusammen zu fassen
Page 34: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 34

Titel im Bild eintragen,

allerdings nur wenn

möglich!!!Name des Referenten

Xx. Februar 2010

Vorführender
Präsentationsnotizen
Parallelität sehr gut sichtbar Ausgabe von Mapper werden in Partitionen geschrieben und an Reducer zugeteilt Immer gleicher Key wird in gleiche Partition geschrieben Reducer wird benötigt um die vielen Ergebnisse der einzelnen Mapper zusammenfassen Jede DataNode kann - unabhängig von anderen Nodes - den jeweiligen Chunk verarbeiten Eine hohe Performance wird erreicht, indem die Berechnung zu den Daten gebracht wird Daten müssen nicht erst auf verschiedene Nodes zum Berechnen verteilt werden, was entsprechend dauern würde und Netzwerk-Bandbreite kostet.
Page 35: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

© Mayflower GmbH 2010

23.09.2010 Mayflower GmbH 35

Titel im Bild eintragen,allerdings nur wennmöglich!!!

Name des ReferentenXx. Februar 2010

Vorführender
Präsentationsnotizen
InputFormat – Beispiel Error Logs
Page 36: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 36

Fehler?

Vorführender
Präsentationsnotizen
Durch Vielzahl an Nodes etc. sind Fehler an der Tagesordnung Ziel: Fehler möglichst automatisch beheben Beispiel: Während der Berechnung auf einer Datanode tritt ein Fehler auf → Berechnung wird einfach auf einer anderen DataNode neu gestartet, welche den gleichen Chunk enthält Eine Datanode fällt aus → Namenode weiß welche Chunks auf der Datanode waren und verteilt die Chunks erneut. Die Chunks sind ja noch redundant vorhanden
Page 37: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 37

ein JobTracker

viele TaskTracker

Vorführender
Präsentationsnotizen
Im Regelfall ein JobTracker auf der Namenode und pro Clusternode (Datanode) ein TaskTracker JobTracker verteilt Arbeit auf die einzelnen TaskTracker TaskTracker führen die einzelnen Tasks auf der jeweiligen Node aus JobTracker überwacht einzelne Jobs. Tritt zum Beispiel bei einem TaskTracker ein Fehler auf, startet der JobTracker den Task einfach auf einem anderen TaskTracker neu
Page 38: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 38

PHP + hadoop

Vorführender
Präsentationsnotizen
Wie kann man PHP und Hadoop verheiraten?
Page 39: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 39

Hadoop Streaming

Vorführender
Präsentationsnotizen
Allgemeine API, die es erlaubt Hadoops MapReduce in fast jeder Sprache zu verwenden
Page 40: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 40

bin/hadoop jar contrib/hadoop-streaming.jar -mapper /home/user/mapper.php -reducer /home/user/reducer.php -input php5-logs/* -output php5-log

Vorführender
Präsentationsnotizen
Beispiel-Aufruf Mapper und Reducer erhalten die Eingabe-Daten über stdin und geben die Ausgabe-Daten jeweils an stdout Mapper und Reducer können Eingabewerte (key/value Paare) mit "fgets(STDIN)" holen, verarbeiten und mittels "echo" Ergebnisse ausgeben
Page 41: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 41

Hive

Vorführender
Präsentationsnotizen
Verarbeiten von mehreren Terabyte SQL ähnliche abfragen „Hive QL“ inkl. joins, group-by's, … Anfragen dauern in der Regel 5 Minuten bis zu mehrere Stunden Antwortzeit hoch auch bei wenig Datenmengen (einige Hundert MB) Convertiert Queries zu einer Sequenz von MapReduce jobs Erweiterbar über MapReduce
Page 42: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 42

HBase

Vorführender
Präsentationsnotizen
Optimiert für Echtzeit Anfragen Echtzeit Lese-/Schreibzugriff auf große Datenmengen Verwalten von Tabellen mit mehreren Milliarden Zeilen und Spalten HBase ist keine SQL Datenbank Spalten orientierter Speicher Kein Single Point of Failure
Page 43: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 43

Pig

Vorführender
Präsentationsnotizen
Datenabfragen über große Datenmengen High level language „Pig Latin“ Sprache sehr einfach zu lesen / schreiben 20% weniger Code mit Pig 20% weniger Entwicklungszeit 75% schneller Compiler produziert Map/Reduce Programme
Page 44: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 44

skaliert

verarbeiten von riesigen Datenmengen

redundant

Vorführender
Präsentationsnotizen
Und nochmal
Page 45: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 45

Fragen?

Page 46: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 46

Links

I Blog Eintrag über Hadoop http://blog.mayflower.de/archives/562-An-introduction-to-Hadoop.html

I HDFS http://hadoop.apache.org/common/docs/current/hdfs_design.html

I Hadoop MapReduce Tutorial inklusive Beispielhttp://hadoop.apache.org/common/docs/current/mapred_tutorial.html

I Hadoop Streaminghttp://hadoop.apache.org/common/docs/r0.15.2/streaming.html

I Hadoop Tutorialhttp://developer.yahoo.com/hadoop/tutorial/

Page 47: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Mayflower GmbH I 47

Bilder

I http://www.flickr.com/photos/nathangibbs/536698819/

I http://www.flickr.com/photos/jamiehuskisson/58952678/

I http://developer.yahoo.com/hadoop/

Page 48: Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

23.09.2010 Mayflower GmbH 48

Vielen Dank für Ihre Aufmerksamkeit!

Referent Thomas Steur

[email protected]

+49 931 35965 1155

Mayflower GmbH

Pleichertorstr. 2

97070 Würzburg