Datenanalyse mit Hadoop
Gideon Zenz – Frankfurter Entwicklertag 2014 19.02.2014
Quelle: Apache Software Foundation
Datenanalyse mit Hadoop Quelle: Apache Software Foundation - - PowerPoint PPT Presentation
Gideon Zenz Frankfurter Entwicklertag 2014 19.02.2014 Datenanalyse mit Hadoop Quelle: Apache Software Foundation Datenanalyse mit Hadoop Gideon Zenz Frankfurter Entwicklertag 2014 Agenda Hadoop Intro Map/Reduce
Gideon Zenz – Frankfurter Entwicklertag 2014 19.02.2014
Quelle: Apache Software Foundation
2
Agenda
Hadoop – Intro Map/Reduce – Parallelisierung des Datenflows Exkurs: M/R mit Java, Python, Pig Aufbereitung der Daten, Auswahl der Algorithmen
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Zielstellung von Hadoop
Hadoop ist:
–Map/Reduce als Verteilungsalgorithmus (mehr mit YARN und Hadoop 2.0) –Hadoop Distributed Filesystem zur Datenverteilung
3
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Standardhardware statt Großrechner
4 Source: Owen O’Malley, Yahoo!
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
5
Agenda
Hadoop – Intro Map/Reduce – Parallelisierung des Datenflows Exkurs: M/R mit Java, Python, Pig Aufbereitung der Daten, Auswahl der Algorithmen
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Map/Reduce
– cat input | grep abc | sort | uniq -c | cat > output – Input | Map | Shuffle & Sort | Reduce | Output
– Erstanalyse großer Datenmengen – Parallele, gleichförmige Verarbeitung
– Clicklog Analyse – Indizierung von Webseiten – Topic/Entity/Sentiment Analysis – Data mining – …
6 Source: Owen O’Malley, Yahoo!,
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Map/Reduce Dataflow
7
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Input Dateien Map Mix&Sort Reduce Output
Kleine Elefanten ganz groß Große Daten von kleinen Elefanten Große Daten schnell Verarbeitet Mapper Mapper Mapper Reducer Reducer Daten, 2 Elefanten, 2 ganz, 1 groß, 1 Große, 2 kleine, 1 kleinen, 1 schnell, 1 verarbeitet, 1 von, 1
Skew
8
Agenda
Hadoop – Intro Map/Reduce – Parallelisierung des Datenflows Exkurs: M/R mit Java, Python, Pig Aufbereitung der Daten, Auswahl der Algorithmen
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Word Count in Python
import dumbo def mapper(key,value): for word in value.split(): yield word,1 def reducer(key,values): yield key,sum(values) if __name__ == "__main__": dumbo.run(mapper,reducer)
9 Source: Owen O’Malley, Yahoo!
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Dataflow programmieren mit Apache PIG
Load Users Load Pages Filter by age Join on name Group on url Count clicks Order by clicks Take top 5
10 Source: Alan F. Gates, Yahoo!
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Szenario:
Ziel: Top 5 Webseiten von Benutzern zwischen 18-25 Jahren
In Map Reduce (Java)
i m p o r t j a v a . i o . I O E x c e p t i o n ; i m p o r t j a v a . u t i l . A r r a y L i s t ; i m p o r t j a v a . u t i l . I t e r a t o r ; i m p o r t j a v a . u t i l . L i s t ; i m p o r t o r g . a p a c h e . h a d o o p . f s . P a t h ; i m p o r t o r g . a p a c h e . h a d o o p . i o . L o n g W r i t a b l e ; i m p o r t o r g . a p a c h e . h a d o o p . i o . T e x t ; i m p o r t o r g . a p a c h e . h a d o o p . i o . W r i t a b l e ; im p o r t o r g . a p a c h e . h a d o o p . i o . W r i t a b l e C o m p a r a b l e ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . F i l e I n p u t F o r m a t ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . F i l e O u t p u t F o r m a t ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . J o b C o n f ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . K e y V a l u e T e x t I n p u t F o r m a t ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . M a p p e r ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . M a p R e d u c e B a s e ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . O u t p u t C o l l e c t o r ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . R e c o r d R e a d e r ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . R e d u c e r ; i m p o r t o r g . a p a c h e . h a d o o p . m a p r e d . R e p o r t e r ; i m p11 Source: Alan F. Gates, Yahoo!
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
In Pig Latin
12 Source: Alan F. Gates, Yahoo!
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Fazit Programmiersprachen
Jede Sprache hat ihre spezifischen Vorzüge und Nachteile
Maximale Flexibilität für dynamische Datenanalyse
13
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
14
Agenda
Hadoop – Intro Map/Reduce – Parallelisierung des Datenflows Exkurs: M/R mit Java, Python, Pig Aufbereitung der Daten, Auswahl der Algorithmen
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
15
Ungleichverteilung der Daten
– Beispiel: Webcrawl, Webseiten haben sehr unterschiedliche Größe
Deshalb:
– Sampling – Heuristiken erstellen – Outlier entfernen (filtern) – Skew join bei PIG – Partitioner passend zu den Daten schreiben
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Datenverständnis
erlangen
– Joins sind teuer
– Shippen wenn vergleichsweise Klein (z.B. Entitiy dictionary) – Sonst HDFS Replikationsrate erhöhen
16
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Algorithmik
– Parallele Algorithmen ohne zentrales Wissen – Batch-Jobs auf großen Datensets – Exploratives arbeiten – Dynamische Anforderungen – Beispiel: Textstatistiken, Entity extraction, etc.
– Iterative Algorithmen (z.B. Graphalgorithmen wie Pagerank) Deshalb: – Iterative durch nicht-iterative Ansätze ersetzen – Iterationen Begrenzen – Konvergenzkriterien optimieren, Startpunkte z.B. vom letzten Durchlauf shippen)
17
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Algorithmik
MapReduce nicht ideal für:
– Compute Server um extrahierte Daten weiterzuverarbeiten
– Storm
– HBase
18
Datenanalyse mit Hadoop – Gideon Zenz – Frankfurter Entwicklertag 2014
Gideon Zenz – Frankfurter Entwicklertag 2014 19.02.2014