mapreduce in der praxis - uni-passau.de€¦ · ddfs disco distributed file system sehr ahnlich zu...

Post on 29-Jul-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related