mapreduce in der praxis - uni-passau.de€¦ · ddfs disco distributed file system sehr ahnlich zu...
TRANSCRIPT
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
MapReduce in der Praxis
Rolf Daniel
Seminar Multicore Programmierung
09.12.2010
1 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Agenda
1 Einleitung
2 Googles MapReduceProgrammiermodellImplementierungBeispieleAusfallbehandlung
3 MapReduce–ImplementierungenDiscoHadoopBOOM
4 Fazit
2 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
1 Einleitung
2 Googles MapReduceProgrammiermodellImplementierungBeispieleAusfallbehandlung
3 MapReduce–ImplementierungenDiscoHadoopBOOM
4 Fazit
3 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Large Scale Data Processing
Verarbeitung von immer großer werdenden DatenmengenIn moglichst kurzer ZeitUnter Verwenudng zahlreicher CPUsSoll sehr einfach funktionieren⇒ Parallele Verarbeitung der Daten in Rechner–Clustern
4 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Abbildung: Google rack mit 40 Servern1
1Quelle: http://news.cnet.com5 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Neue Probleme
Verarbeitung der Daten muss parallelisierbar sein
Viele Knoten fuhren zu einer hohen AusfallrateHohe Netzwerklast durch Verteilung der DatenKomplexitat fur Programme steigt
6 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Neue Probleme
Verarbeitung der Daten muss parallelisierbar seinViele Knoten fuhren zu einer hohen Ausfallrate
Hohe Netzwerklast durch Verteilung der DatenKomplexitat fur Programme steigt
6 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Neue Probleme
Verarbeitung der Daten muss parallelisierbar seinViele Knoten fuhren zu einer hohen AusfallrateHohe Netzwerklast durch Verteilung der Daten
Komplexitat fur Programme steigt
6 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
Neue Probleme
Verarbeitung der Daten muss parallelisierbar seinViele Knoten fuhren zu einer hohen AusfallrateHohe Netzwerklast durch Verteilung der DatenKomplexitat fur Programme steigt
6 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Motivation
MapReduce–Konzept
MapReduce bietet:Automatische Parallelisierung und VerteilungFehlertoleranzAbstraktion fur ProgrammiererStatusuberwachung
7 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
1 Einleitung
2 Googles MapReduceProgrammiermodellImplementierungBeispieleAusfallbehandlung
3 MapReduce–ImplementierungenDiscoHadoopBOOM
4 Fazit
8 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Programmiermodell
MapReduce–Berechnungen
Die Berechnung wird durch zwei Funktionen beschriebenMap: bildet Eingabedaten auf Schlussel/Wert–Paare abReduce: fugt diese Paare zum Endergebnis zusammen
9 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Programmiermodell
MapReduce Framework
Das Framework ist zustandig fur:automatische Parallelisierung und VerteilungFehlerbehandlungScheduling der Kommunikation zwischen den Rechnern
10 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
GFS
Google File System
Eingabedaten werden in Blocke aufgeteiltBlocke werden kopiert und auf verschiedenen Rechnern gespeichertFur MapReduce–Berechnungen werden die meisten Daten lokalgelesen⇒ Netzwerklast wird reduziert
11 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Implementierung des Frameworks
Aufbau des Clusters (Stand 2004):mehrere hundert/tausend Maschinen2–CPU x86, 2–4 GB Arbeitsspeicher, LinuxStandardnetzwerkhardware100 Mb/s oder 1 Gb/s EthernetSpeicherung von Daten lokal auf IDE FestplattenGFS zur Verwaltung der DatenScheduling–System
12 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Implementierung des Frameworks
Master
Es gibt nur einen pro MapReduce–OperationWeist den Workern Aufgaben zuSpeichert Zustande der Worker (idle, in–progress, completed)Informiert Reduce–Worker uber Zwischenergebnisse
Worker
Anzahl ist beliebigBekommen Aufgaben und Daten zugewiesenFuhren Map– bzw. Reduce–Tasks durch
13 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
14 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
15 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
16 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
17 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
18 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ablauf
19 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Eingabedaten: Text
”Here, each document is split in words, and each word is counted.“
20 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Map–Funktion definieren
map(String key, String value):// key: number of the part of a sentence// value: content of the part of a sentencefor each word w in value:EmitIntermediate(w,"1");
21 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Reduce–Funktion definieren
reduce(String key, Iterator values):// key: word// values: an iterator of countsint result = 0;for each v in values:result += ParseInt(v);
Emit(AsString(result));
22 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Schritt 1
Eingabedaten in mehrere Satzteile zerlegenJeder Satzteil erhalt eine Nummer⇒ Liste aus Schlussel/Wert–PaarenVerbindung zum Master herstellen
23 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Schritt 2 und 3
Master weist Workern je einen Task zuJeder Map–Worker erhalt mehrere SatzteileMap–Worker bilden Daten auf Schlussel/Wert–Paare abDiese Zwischenergebnisse werden gepuffert
24 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Schritt 4
Gepufferte Daten werden periodischauf lokale Festplatte geschrieben undfur die Reduce–Worker partitioniert
Speicherort wird Master mitgeteilt
25 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Schritt 5
Master teilt Reduce–Workern Speicherort mitReduce–Worker
lesen partitionierte Zwischenergebnisse per RPC undsortieren diese anhand des Schlussels
26 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Worter in einem Dokument zahlen
Schritt 6
Wird von jedem Reduce–Worker durchgefuhrt:Iteriert uber sortierte DatenFur jeden Schlussel und die zugehorigen Werte wirdReduce–Funktion aufgerufenAusgaben aller Reduce–Funktionen werden zu Endergebniskonkateniert
27 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Weitere Beispiele
Invertierter Index
Map–FunktionEingabedaten: Dokumente, Webseiten,...Ausgabe: Paare aus Schlagwort und Dokument–ID
Reduce–FunktionEingabe: Schlagwort und Iterator uber Dokument–IDsAusgabe: Schlagwort und Liste mit Dokument–IDs
28 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Weitere Beispiele
Verteiltes GrepHaufigkeit von URL–ZugriffenTerm–Vektor pro HostVerteiltes Sortieren. . .
29 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ausfallbehandlung
Ausfall eines Workers
Master fragt periodisch Zustande abBetroffene Tasks werden zuruckgesetzt und erneut ausgefuhrtMap–Worker:
alle fertiggestellten und in Bearbeitung befindlichen Tasks werdenzuruckgesetzt
Reduce–Worker:nur in Bearbeitung befindliche Tasks werden zuruckgesetzt
30 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
ProgrammiermodellImplementierungBeispieleAusfallbehandlung
Ausfallbehandlung
Ausfall des Masters
Kommt sehr selten vorKeine Recovery⇒ MapReduce–Operation wird wiederholt
31 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
1 Einleitung
2 Googles MapReduceProgrammiermodellImplementierungBeispieleAusfallbehandlung
3 MapReduce–ImplementierungenDiscoHadoopBOOM
4 Fazit
32 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Disco
Das Disco Projekt
Open–Source Implementierung in ErlangEntwickelt von Nokia Research CenterBasiert auf einer Master–Slave–ArchitekturVerteiltes FilesystemDiscodex (Index)
33 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Architektur
Abbildung: Disco–Architektur2
2Quelle: http://discoproject.org34 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Discos MapReduce
Discos MapReduce
Master ist fur Verteilung der Jobs zustandigMaster erstellt auf jedem Knoten einen Worker SupervisorMap– bzw. Reduce–Tasks werden von Python–WorkerndurchgefuhrtBenotigte Daten werden per HTTP ubertragen
35 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
DDFS
Disco Distributed File System
sehr ahnlich zu GFSZustandig fur Verteilung, Persistenz, Adressierung und Zugriff derDatenTag–basiertes FilesystemFehlertoleranz und hohe Verfugbarkeit durch Replikation
36 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
DDFS
Tag–basiertes Filesystem
Blobs: Konnen beliebige Objekte (Files) im Filesystem seinTags: Beinhalten Metadaten uber Blobs
Abbildung: Blob/Tag–Konzept3
3Quelle: http://discoproject.org37 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Discodex
Discodex
Indexierung der Daten fur eine konstante ZugriffszeitArbeitet ahnlich wie ein normaler IndexIndizes werden durch Schlussel/Werte–Paare reprasentiertIndizes werden in ichunks aufgeteilt und im DDFS gespeichertDiscodb–Objekt: Datenstruktur speichert Referenz auf die ichunks
38 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Hadoop
Apache Hadoop
Software Framework unterstutzt datenintensive und verteilteApplikationenInspiriert von Googles MapReduce und GFSOpen–Source Java ImplementierungVerteiltes FilesystemWird von Facebook, IBM,Yahoo u.v.m. genutzt
39 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Master–Slave–Architektur
Abbildung: Aufbau eines Hadoop–Clusters4
4Quelle: http://en.wikipedia.org40 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Hadoops MapReduce
Hadoops MapReduce
Ein JobTracker steuert mehrere TaskTrackerEin Job wird in eine Menge von Map– und Reduce–TasksaufgeteiltJobTracker weist TaskTrackern die einzelnen Tasks zuTaskTracker hat feste Anzahl an Slots fur die Ausfuhrung vonTasksHeartbeat–Protokoll zwischen JobTracker und TaskTrackern
41 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
Hadoops MapReduce
Hadoops MapReduce
Jeder Map–Task fuhrt Map–Funktion durch, partitioniertZwischenergebnisse (Schlussel/Wert–Paare) und speichert sie lokalabJobTracker bildet Reduce–Tasks und weist sie TaskTrackern zuJeder Reduce–Task
holt sich die entsprechenden Partitionensortiert sie lokal nach ihren Schlusselnfuhrt Reduce–Funktion durchspeichert das Ergebnis im verteilten Filsystem
42 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
HDFS
Hadoop Distributed File System
zentraler NameNode speichert Metadaten des FilesystemsDaten werden in Datenblocke aufgeteilt, repliziert und aufDataNodes im Cluster verteiltDataNodes schicken Heartbeat–Nachrichten zum NameNode
43 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
BOOM–Projekt
Berkeley Orders of Magnitude
”We seek to build OOMa bigger systems with OOM lesseffort“b
aOOM: Orders Of MagnitudebQuelle: http://boom.cs.berkeley.edu/
44 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
DiscoHadoopBOOM
BOOM Analytics
Portierung von Hadoops MapReduce und Neuimplementierungvon HDFSGeschrieben in Overlog und JavaKompaktere und leicht erweiterbare Codebasis
System Lines in LATE–
Patch
Files Modified by
LATE–Patch
LOC
Hadoop 2.102 17 6.573
HDFS – – ≈21.700
BOOM–MR 82 2 396 + 1.269
BOOM–FS – – 469 + 1.431
45 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
1 Einleitung
2 Googles MapReduceProgrammiermodellImplementierungBeispieleAusfallbehandlung
3 MapReduce–ImplementierungenDiscoHadoopBOOM
4 Fazit
46 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Fazit
MapReduce
Einfach zu verwendenOpen–Source–Implementierungen vorhandenGute Abstraktion fur Entwickler
Verteiltes Filesystem wird benotigt!
47 / 53
EinleitungGoogles MapReduce
MapReduce–ImplementierungenFazit
Noch Fragen?
Vielen Dank fur eure Aufmerksamkeit!Gibt es noch Fragen?
48 / 53
Zusatzliche Informationen
Overlog
Erweiterung von Datalog durch:Notation zur Spezifizierung des Speicherorts der DatenSQL–basierte Erweiterung: Primarschlussel, AggregationModell zur Verarbeitung und Generierung von Anderungen anTabellen
Ereignisgesteuerte ProgrammierspracheUnterstutzt relationale Tabellen
49 / 53
Zusatzliche Informationen
Overlog–Zeitschritt
Overlog–Tupel werden in einem Zeitschritt verarbeitetKnoten sieht nur lokal gespeicherte Tupel (Tabelleneintrage)Kommunikation zwischen dem System und dem Knoten uberEventsEvent: entspricht einem Einfugen, Updaten oder Loschen vonEintragen (Tupeln) in Datalog–TabellenAnderungen erfolgen atomar und sind dauerhaft
50 / 53
Zusatzliche Informationen
Abbildung: Quelle: BOOM: Data-Centric Programming in the Datacenter
51 / 53
Zusatzliche Informationen
Abbildung: BOOM–MR Relationen definieren Zustand des JobTrackers5
5Quelle: BOOM: Data-Centric Programming in the Datacenter52 / 53
Zusatzliche Informationen
Abbildung: BOOM–FS Relationen definieren Metadaten des Dateisystems6
6Quelle: BOOM: Data-Centric Programming in the Datacenter53 / 53