(Microsoft PowerPoint - Hadoop-High Perfomance Batches in der

Werbung
Hadoop
High Performance Batches in der Cloud
Hadoop
Folie 1
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Alles geht in die Cloud…
Hadoop
© Zühlke 2011
Image: Chris Sharp / FreeDigitalPhotos.net
Cloud und Batches passen zusammen
Batches
Cloud
Pay-per-Use
Nur zeitweise genutzt
Flexibel skalierbar
Hohe Rechenkapazitäten
benötigt
Ausführung auf
Commodity-Hardware
Hadoop
Folie 3
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Was ist Hadoop?
•
Plattform für parallele Datenverarbeitung auf
Commodity-Hardware
•
Konzepte aus der funktionalen Welt
•
inspiriert durch Google-Technologien
•
Apache Top-Level-Projekt
Hadoop
Folie 4
25. Januar 2011
Masanori Fujita
© Zühlke 2011
MapReduce
Programmieransatz zur parallelen Datenverarbeitung
map(k,v) [(K1,V1), (K2,V2)…]
reduce(Kn, [Vi,Vj…]) (Kn, R)
Hadoop
Folie 5
25. Januar 2011
map
reduce
Masanori Fujita
© Zühlke 2011
MapReduce
Beispiel: Inverted Index
Verzeichnis: Term Dokument
map(did,text) [(word1,did1), (word2,did2)…]
reduce(wordN, [didX,didY…])
(wordN, [didX, didY…])
Hadoop
Folie 6
25. Januar 2011
documents
map
Image: Salvatore Vuono / FreeDigitalPhotos.net
reduce
Masanori Fujita
© Zühlke 2011
Hadoop-Zoo
Hive
Pig
Hbase
HDFS
Commons
Zookeeper
Chukwa
Mahout
Hadoop
Folie 7
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Einsatzszenarien
ETL
Data Mining
Reporting
Indizierung
Hadoop
Folie 8
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Kontrollfluss innerhalb Hadoop
Job Tracker Node
Client Node
submit job
Hadoop Job Client
Hadoop Job Tracker
Daemon
MapReduce
Program
store
job resources
allocate task
Task Tracker Node
Task Tracker Node
Task Tracker Node
Hadoop Task Tracker
Daemon
Hadoop Task Tracker
Daemon
Hadoop Task Tracker
Daemon
launch
launch
Hadoop
Child Process
Hadoop
Child Process
Hadoop
Child Process
Map or Reduce
Task
Map or Reduce
Task
Map or Reduce
Task
File System
MapReduce
Program JAR
launch
retrieve
job resources
Hadoop
Folie 14
25. Januar 2011
Input Data
Masanori Fujita
© Zühlke 2011
Kontrollfluss innerhalb Hadoop
Job Tracker Node
Client Node
Hadoop Job Client
retrieve job status
Hadoop Job Tracker
Daemon
MapReduce
Program
Retrieve results
heartbeat + progress
Task Tracker Node
Task Tracker Node
Task Tracker Node
Hadoop Task Tracker
Daemon
Hadoop Task Tracker
Daemon
Hadoop Task Tracker
Daemon
report progress
report progress
Hadoop
Child Process
Hadoop
Child Process
Hadoop
Child Process
Map or Reduce
Task
Map or Reduce
Task
Map or Reduce
Task
Store results
File System
MapReduce
Program JAR
report progress
Input Data
Hadoop
Folie 15
25. Januar 2011
Output Data
Masanori Fujita
© Zühlke 2011
Eine andere Art Jobs zu schreiben
Native Job
Streaming Job
Task Tracker Node
Task Tracker Node
Hadoop Task Tracker
Daemon
Hadoop Task Tracker
Daemon
Hadoop
Child Process
Hadoop
Child Process
Map or Reduce
Task
std in
std out
Map or Reduce
Streaming Process
Hadoop
Folie 16
25. Januar 2011
Masanori Fujita
© Zühlke 2011
cat test_data.txt | ../src/word_count_mapper.rb | sort | ../src/word_count_reducer.rb
Folie 20
25. Januar 2011
Masanori Fujita
Folie 21
Folie 22
25. Januar 2011
Folie 23
25. Januar 2011
Folie 24
25. Januar 2011
Folie 25
25. Januar 2011
Folie 26
25. Januar 2011
Folie 27
25. Januar 2011
Masanori Fujita
Rechnung bitte!
10 GB Wörter zählen
Konfiguration
ECUs
Notebook
Dauer
Kosten
Durchsatz
n/a
100 (100) min
n/a
6 GB/h
5x Small
4
54 (51) min
0,55$ (0,47$)
12 GB/h
10x Small
9
27 (25) min
1,10 $ (0,46$)
24 GB/h
5x Large
16
17 (14) min
2,20$ (0,51$)
43 GB/h
5x HighCPU medium
20
16 (14) min
1,1$ (0,26$)
43 GB/h
10x HighCPU medium
45
10 (7) min
2,20$ (0,26$)
86 GB/h
Hadoop
Folie 29
25. Januar 2011
zzgl. Speicherkosten für S3
Masanori Fujita
© Zühlke 2011
Wie stellt man Probleme in MapReduce dar?
Problemklasse: Map-Only
Verteilte Suche
Suche nach „A“
1
1
2
Mapper emittiert nur
Records mit Suchkriterium.
Reducer tut nichts.
1: A, B, C
2: D, E
3: B, E
4
3
1
4
4
1, 4, 5
5
4: A, D
5: A, C, E
5
5
Hadoop
Folie 31
25. Januar 2011
map
reduce
Masanori Fujita
© Zühlke 2011
Problemklasse: Map-Only
Massenkonvertierungen
z.B. Medien konvertieren, Renditions durchführen
1
1
Mapper führt
Konvertierungen aus.
2
2
Reducer tut nichts.
1: a.jpg, b.png
2: c.tif, d.jpg
3: e.doc, f.pdf
3
3
4
4
1
4
1: a.jpg, b.jpg
4
5
5
4: g.mov
2: c.jpg, d.jpg
3: e.pdf, f.pdf
4: g.mpg
5: h.avi
5
5: h.mpg
5
Hadoop
Folie 32
25. Januar 2011
map
reduce
Masanori Fujita
© Zühlke 2011
Problemklasse: Sortieren
Sortieren nach Punkten
120
1
Mapper emittiert
Sortierkriterium als Key.
323
2
Reducer tut nichts.
1: Tom, 120
2: Jim, 323
3: John, 986
986
3
43
4
43, 4
986, 3
1: 43, Bob
120, 1
1020, 5
2: 120, Tom
323, 2
4: Bob, 43
3: 323, Jim
4: 986, John
5: Helen, 1020
1020
5: 1020, Helen
5
Hadoop
Folie 33
25. Januar 2011
map
reduce
Masanori Fujita
© Zühlke 2011
Problemklasse: Gruppieren/Aggregieren
Sortieren nach Punkten
Tom
1
Mapper emittiert GruppenAttribut als Key.
Jim
Reducer wendet
Aggregatfunktion an.
2
1: Tom, 120
2: Jim, 323
3: Tom, 986
Tom
3
Bob
4
Tom, [120, 986]
1: Bob, 43
Jim, [323, 1020]
2: Jim, 1343
Bob, [43]
4: Bob, 43
3: Tom, 1106
5: Jim, 1020
Jim
5
Hadoop
Folie 34
25. Januar 2011
map
reduce
Masanori Fujita
© Zühlke 2011
Problemklasse: Joins
Reduce Side Joins
•
Mapper erhält beide
Quellen.
•
Mapper emittiert JoinAttribut als Key.
•
Map Side Joins
•
Mapper erhält beide
Quellen sortiert nach JoinSchlüssel.
•
Mapper iteriert über eine
Quelle und verknüpft mit
Daten aus der anderen
Quelle
•
Reducer tut nichts.
Reducer verknüpft pro
Join-Key die Datensätze aus
beiden Quellen.
Hadoop
Folie 35
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Pig Latin:
Komfortablere Abfragen
Eine prozedurale Abfragesprache als Aufsatz auf Hadoop:
Users
= load 'users' as (name, age, ipaddr);
Clicks
= load 'requestlog' as (url, user, value);
ValuableClicks
= filter Clicks by value > 0;
UserClicks
= join Users by name, ValuableClicks by user;
Geoinfo
= load 'geoinfo' as (ipaddr, dma);
UserGeo
= join UserClicks by ipaddr, Geoinfo by ipaddr;
ByDMA
= group UserGeo by dma;
ValuableClicksPerDMA = foreach ByDMA generate group, COUNT(UserGeo);
store ValuableClicksPerDMA into 'ValuableClicksPerDMA';
Hadoop
Folie 36
25. Januar 2011
Pig übersetzt nach MapReduce.
Quelle: http://developer.yahoo.com/blogs/hadoop/posts/2010/01/comparing_pig_latin_and_sql_fo/
Masanori Fujita
© Zühlke 2011
Hive:
Datawarehouse auf Hadoop-Basis
CREATE TABLE users
(name STRING, age INT, ipaddr STRING);
CREATE TABLE requestlog
(url STRING, user STRING, value INT);
CREATE TABLE geoinfo
(ipaddr STRING, dma STRING);
SELECT dma, COUNT(*)
FROM requestlog
JOIN users ON (requestlog.user = users.name)
JOIN geoinfo ON (users.ipaddr = geoinfo.ipaddr)
GROUP BY dma
WHERE value > 0;
Hadoop
Folie 37
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Die Gelegenheit ist günstig
•
zahlreiche Success Stories
überall auf der Welt
•
neue Möglichkeiten der
Massendatenverarbeitung
•
Wettbewerbsvorsprung in
puncto Wirtschaftlichkeit
Hadoop
Folie 38
25. Januar 2011
Masanori Fujita
© Zühlke 2011
Und was werden Sie mit Hadoop tun?
Kontakt & Infos: [email protected]
Herunterladen