Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Preview:

Citation preview

© Mayflower GmbH 2010

Verteiltes Verarbeiten von riesigen Datenmengen mittels Hadoop

Thomas Steur I 19. August 2010

Mayflower GmbH I 2

Vorführender
Präsentationsnotizen
Was meine ich mit riesigen Datenmengen? Hunderte von Giga- / Tera- / Peta-Bytes

Mayflower GmbH I 3

Nachteile von zum Beispiel

RDBMS

Mayflower GmbH I 4

teuer

Vorführender
Präsentationsnotizen
Benötigt werden: viele schnelle Festplatten viele Cores viel Ram Dazu gleiches Failover System

Mayflower GmbH I 5

skalieren

Vorführender
Präsentationsnotizen
Besserung bringt zum Beispiel: Memcached Partitionierung … Skaliert im gesamten aber nicht so gut

Mayflower GmbH I 6

Vorführender
Präsentationsnotizen
Hier kommt hadoop ins Spiel

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?

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

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

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

Mayflower GmbH I 11

skaliert sehr gut

Verarbeiten von riesigen Datenmengen

redundant

Vorführender
Präsentationsnotizen
Daten werden redundant abgelegt

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

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

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

Mayflower GmbH I 15

Vorführender
Präsentationsnotizen
Beispiel Facebook

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

Mayflower GmbH I 17

weitere ~90 TB pro Tag

Vorführender
Präsentationsnotizen
Weitere 90 TB pro Tag kommen dazu

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.

Mayflower GmbH I 19

Vorführender
Präsentationsnotizen
Beispiel Yahoo

Mayflower GmbH I 20

38.000 Nodes

~ 20 Cluster

12 TB Speicher pro Node

Vorführender
Präsentationsnotizen
Größtes Hadoop Cluster

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

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“

Mayflower GmbH I 23

Und wie?

Vorführender
Präsentationsnotizen
Selber ein Cluster aufsetzen Amazon Elastic MapReduce ...

Mayflower GmbH I 24

HDFS(Hadoop Distributed File System)

Vorführender
Präsentationsnotizen
speichert große Dateien verteilt über viele Nodes

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

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

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

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

© 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

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, ...

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

© 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

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

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.

© 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

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

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

Mayflower GmbH I 38

PHP + hadoop

Vorführender
Präsentationsnotizen
Wie kann man PHP und Hadoop verheiraten?

Mayflower GmbH I 39

Hadoop Streaming

Vorführender
Präsentationsnotizen
Allgemeine API, die es erlaubt Hadoops MapReduce in fast jeder Sprache zu verwenden

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

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

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

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

Mayflower GmbH I 44

skaliert

verarbeiten von riesigen Datenmengen

redundant

Vorführender
Präsentationsnotizen
Und nochmal

Mayflower GmbH I 45

Fragen?

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/

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/

23.09.2010 Mayflower GmbH 48

Vielen Dank für Ihre Aufmerksamkeit!

Referent Thomas Steur

thomas.steur@mayflower.de

+49 931 35965 1155

Mayflower GmbH

Pleichertorstr. 2

97070 Würzburg

Recommended