www.wikidata.de-de.nina.az
MapReduce ist ein vom Unternehmen Google Inc eingefuhrtes Programmiermodell fur nebenlaufige Berechnungen uber mehrere Petabyte 1 grosse Datenmengen auf Computerclustern MapReduce ist auch der Name einer Implementierung des Programmiermodells in Form einer Software Bibliothek Beim MapReduce Verfahren werden die Daten in drei Phasen verarbeitet Map Shuffle Reduce von denen zwei durch den Anwender spezifiziert werden Map und Reduce Dadurch lassen sich Berechnungen parallelisieren und auf mehrere Rechner verteilen Bei sehr grossen Datenmengen ist die Parallelisierung unter Umstanden schon deshalb erforderlich weil die Datenmengen fur einen einzelnen Prozess und das ausfuhrende Rechnersystem zu gross sind Das Programmiermodell wurde durch die in der funktionalen Programmierung haufig verwendeten Funktionen map und reduce inspiriert 2 auch wenn die Arbeitsweise der Bibliothek davon abweicht 3 2010 wurde fur MapReduce ein US Patent erteilt 4 Der wesentliche Beitrag von MapReduce ist jedoch das zu Grunde liegende System das die Berechnungen stark parallelisiert die Reorganisation der Daten im Shuffle Schritt optimiert und automatisch auf Fehler im Cluster reagieren kann wie beispielsweise den Ausfall von kompletten Knoten Inhaltsverzeichnis 1 Arbeitsweise 1 1 Illustration des Datenflusses 1 2 Definition der MapReduce Funktion 1 3 Definition der Map und Reduce Funktionen 1 4 Map Phase 1 5 Shuffle Phase 1 6 Reduce Phase 1 7 Combine Phase 2 Beispiel Verteilte Haufigkeitsanalyse mit MapReduce 2 1 Problem 2 2 Angabe der Map und Reduce Funktionen 2 3 Map Phase 2 4 Shuffle Phase 2 5 Reduce Phase 2 6 Insgesamt 2 7 Beispielhafte Berechnung 3 Weitere Beispiele 4 Verallgemeinerung 5 Siehe auch 6 Weblinks 6 1 Fachartikel 6 2 Software 7 EinzelnachweiseArbeitsweise BearbeitenIllustration des Datenflusses Bearbeiten nbsp Das obige Bild illustriert den Datenfluss bei der MapReduce Berechnung Map Phase Die Eingabedaten D A T A werden auf eine Menge von Map Prozessen verteilt illustriert durch bunte Rechtecke welche jeweils die vom Nutzer bereitgestellte Map Funktion berechnen Die Map Prozesse werden idealerweise parallel ausgefuhrt Jede dieser Map Instanzen legt Zwischenergebnisse ab illustriert durch pinkfarbene Sterne Von jeder Map Instanz fliessen Daten in eventuell verschiedene Zwischenergebnisspeicher Shuffle Phase Die Zwischenergebnisse werden gemass den Ausgabeschlusseln die von der Map Funktion produziert wurden neu verteilt sodass alle Zwischenergebnisse mit demselben Schlussel im nachsten Schritt auf demselben Computersystem verarbeitet werden Reduce Phase Fur jeden Satz an Zwischenergebnissen berechnet jeweils genau ein Reduce Prozess illustriert durch violette Rechtecke die vom Nutzer bereitgestellte Reduce Funktion und damit die Ausgabedaten illustriert durch violette Kreise X Y und Z Die Reduce Prozesse werden idealerweise ebenfalls parallel ausgefuhrt Definition der MapReduce Funktion Bearbeiten Die MapReduce Bibliothek realisiert eine Funktion welche aus einer Liste von Schlussel Wert Paaren Eingabeliste eine neue Liste von Schlussel Wert Paaren Ausgabeliste berechnet M a p R e d u c e K V L W k 1 v 1 k n v n l 1 w 1 l m w m displaystyle begin aligned mathrm MapReduce K times V amp to L times W lbrack k 1 v 1 ldots k n v n rbrack amp mapsto lbrack l 1 w 1 ldots l m w m rbrack end aligned nbsp Erlauterung Die Mengen K displaystyle K nbsp und L displaystyle L nbsp enthalten Schlussel die Mengen V displaystyle V nbsp und W displaystyle W nbsp enthalten Werte Alle Schlussel k K displaystyle k in K nbsp sind vom gleichen Typ z B Strings Alle Schlussel l L displaystyle l in L nbsp sind vom gleichen Typ z B ganze Zahlen Alle Werte v V displaystyle v in V nbsp sind vom gleichen Typ z B Atome Alle Werte w W displaystyle w in W nbsp sind vom gleichen Typ z B Gleitkommazahlen Wenn A displaystyle A nbsp und B displaystyle B nbsp Mengen sind so ist mit A B displaystyle A times B nbsp die Menge aller Paare a b displaystyle a b nbsp gemeint wobei a A displaystyle a in A nbsp und b B displaystyle b in B nbsp kartesisches Produkt Wenn M displaystyle M nbsp eine Menge ist so ist mit M displaystyle M nbsp die Menge aller endlichen Listen mit Elementen aus M displaystyle M nbsp gemeint angelehnt an den Kleene Stern die Liste kann auch leer sein Definition der Map und Reduce Funktionen Bearbeiten Der Nutzer konfiguriert die Bibliothek uber die Bereitstellung der beiden Funktionen Map und Reduce die wie folgt definiert sind M a p K V L W k v l 1 x 1 l r k x r k displaystyle begin aligned mathrm Map K times V amp to L times W k v amp mapsto lbrack l 1 x 1 ldots l r k x r k rbrack end aligned nbsp bzw R e d u c e L W X l y 1 y s l w 1 w m l displaystyle begin aligned mathrm Reduce L times W amp to X left l lbrack y 1 ldots y s l rbrack right amp mapsto lbrack w 1 ldots w m l rbrack end aligned nbsp Map Phase Bearbeiten Map bildet ein Paar bestehend aus einem Schlussel k displaystyle k nbsp und einem Wert v displaystyle v nbsp auf eine Liste von neuen Paaren l r x r displaystyle l r x r nbsp ab welche die Rolle von Zwischenergebnissen spielen Die Werte x r displaystyle x r nbsp sind vom gleichen Typ wie die Endergebnisse w i displaystyle w i nbsp Bei einem neuen Paar l x displaystyle l x nbsp verweist der von Map vergebene Schlussel l displaystyle l nbsp dabei auf eine Liste T l displaystyle T l nbsp von Zwischenergebnissen in welcher der von Map berechnete Wert x displaystyle x nbsp gesammelt wird Die Bibliothek ruft fur jedes Paar in der Eingabeliste die Funktion Map auf All diese Map Berechnungen sind voneinander unabhangig so dass man sie nebenlaufig und verteilt auf einem Computercluster ausfuhren kann Shuffle Phase Bearbeiten Bevor die Reduce Phase starten kann mussen die Ergebnisse der Map Phase nach ihrem neuen Schlussel l displaystyle l nbsp in Listen T l displaystyle T l nbsp gruppiert werden Wenn Map und Reduce Funktionen nebenlaufig und verteilt ausgefuhrt werden wird hierfur ein koordinierter Datenaustausch notwendig Die Performanz eines Map Reduce Systems hangt massgeblich davon ab wie effizient die Shuffle Phase implementiert ist Der Nutzer wird in der Regel nur uber die Gestaltung der Schlussel l displaystyle l nbsp auf die Shuffle Phase Einfluss nehmen Daher reicht es sie einmalig gut zu optimieren und zahlreiche Anwendungen konnen hiervon profitieren Reduce Phase Bearbeiten Sind alle Map Aufrufe erfolgt bzw liegen alle Zwischenergebnisse in T l displaystyle T l nbsp vor so ruft die Bibliothek fur jede Zwischenwertliste die Funktion Reduce auf welche daraus eine Liste von Ergebniswerten w j displaystyle w j nbsp berechnet die von der Bibliothek in der Ausgabeliste als Paare l w j displaystyle l w j nbsp gesammelt werden Auch die Aufrufe von Reduce konnen unabhangig auf verschiedene Prozesse im Computercluster verteilt werden Anmerkung Diese Darstellung war etwas vereinfacht denn in der Regel wird die Steuerung des MapReduce Verfahrens eine Anzahl R displaystyle R nbsp von Reduce Prozessen anstreben so dass wenn es fur mehr als R displaystyle R nbsp verschiedene Schlussel l displaystyle l nbsp Zwischenergebnisse l x displaystyle l x nbsp gibt Zwischenergebnisse l x displaystyle l x nbsp mit verschiedenen Schlusseln l displaystyle l nbsp in einer gemeinsamen Liste gespeichert werden Die entsprechenden Paare werden vor der Reduce Berechnung nach Schlusseln sortiert Combine Phase Bearbeiten Optional kann vor der Shuffle Phase noch eine Combine Phase erfolgen Diese hat in der Regel die gleiche Funktionalitat wie die Reducefunktion wird aber auf dem gleichen Knoten wie die Map Phase ausgefuhrt Dabei geht es darum die Datenmenge die in der Shuffle Phase verarbeitet werden muss und damit die Netzwerklast zu reduzieren 2 Der Sinn der Combine Phase erschliesst sich sofort bei der Betrachtung des Wordcount Beispiels Auf Grund der unterschiedlichen Haufigkeit von Wortern in naturlicher Sprache wurde bei einem deutschen Text beispielsweise sehr oft eine Ausgabe der Form und 1 erzeugt gleiches gilt fur Artikel und Hilfsverben Durch die Combine Phase wird nun aus 100 Nachrichten der Form und 1 lediglich eine Nachricht der Form und 100 Dies kann die Netzwerkbelastung signifikant reduzieren ist aber nicht in allen Anwendungsfallen moglich Beispiel Verteilte Haufigkeitsanalyse mit MapReduce BearbeitenProblem Bearbeiten Man mochte fur umfangreiche Texte herausfinden wie oft welche Worter vorkommen Angabe der Map und Reduce Funktionen Bearbeiten map String name String document name document name key document document contents value for each word w in document EmitIntermediate w 1 reduce String word Iterator partialCounts word a word key partialCounts a list of aggregated partial counts values for word int result 0 for each v in partialCounts result v Emit word result Map Phase Bearbeiten Map bekommt jeweils einen Dokumentnamen name und ein Dokument document als Zeichenkette ubergeben Map durchlauft das Dokument Wort fur Wort Jedes Mal wenn ein Wort w angetroffen wird wandert eine 1 in die w Zwischenergebnisliste falls diese noch nicht existiert wird sie angelegt Ist man mit allen Wortern durch und hat der Text insgesamt n verschiedene Worter so endet die Map Phase mit n Zwischenergebnislisten jede fur ein anderes Wort sammelnd welche so viele 1 Eintrage enthalt wie das entsprechende Wort im Dokument gefunden wurde Eventuell liefen viele Map Instanzen gleichzeitig falls der Bibliothek mehrere Worter und Dokumente ubergeben wurden Shuffle Phase Bearbeiten Die Zwischenergebnislisten von mehreren Prozessen Systemen fur das gleiche Wort w werden zusammengefasst und auf die Systeme fur die Reducer verteilt Reduce Phase Bearbeiten Reduce wird fur das Wort word und die Zwischenergebnisliste partialCounts aufgerufen Reduce durchlauft die Zwischenergebnisliste und addiert alle gefundenen Zahlen auf Die Summe result wird an die Bibliothek zuruckgegeben sie enthalt wie oft das Wort word in allen Dokumenten gefunden wurde Die Zwischenergebnisse konnten parallel durch gleichzeitige Reduce Aufrufe berechnet werden Insgesamt Bearbeiten Aus einer Liste von Dokumentnamen und Dokumenten wird eine Liste von Worten und Worthaufigkeiten generiert Beispielhafte Berechnung Bearbeiten Zum Beispiel ware folgende Berechnung auf einem klassischen Text denkbar Text Fest gemauert in der Erden Steht die Form aus Lehm gebrannt Heute muss die Glocke werden Frisch Gesellen seid zur Hand Von der Stirne heiss Rinnen muss der Schweiss Soll das Werk den Meister loben Doch der Segen kommt von oben Der Text wird in Satze aufgeteilt dabei bietet sich eine Normalisierung an indem man alles klein schreibt und die Satzzeichen entfernt Eingabeliste satz 1 fest gemauert in der erden steht die form aus lehm gebrannt satz 2 heute muss die glocke werden frisch gesellen seid zur hand satz 3 von der stirne heiss rinnen muss der schweiss soll das werk den meister loben doch der segen kommt von oben Die Eingabeliste hat drei Paare als Elemente wir konnen daher drei Map Prozesse starten P1 Map satz 1 fest gemauert in der erden steht die form aus lehm gebrannt P2 Map satz 2 heute muss die glocke werden frisch gesellen seid zur hand P3 Map satz 3 von der stirne heiss rinnen muss der schweiss soll das werk den meister loben doch der segen kommt von oben Die Map Aufrufe generieren diese Zwischenergebnispaare P1 fest 1 gemauert 1 in 1 der 1 erden 1 steht 1 die 1 form 1 aus 1 lehm 1 gebrannt 1 P2 heute 1 muss 1 die 1 glocke 1 werden 1 frisch 1 gesellen 1 seid 1 zur 1 hand 1 P3 von 1 der 1 stirne 1 heiss 1 rinnen 1 muss 1 der 1 schweiss 1 soll 1 das 1 werk 1 den 1 meister 1 loben 1 doch 1 der 1 segen 1 kommt 1 von 1 oben 1 Die Map Prozesse liefern ihre Paare an die MapReduce Bibliothek welche diese in den Zwischenergebnislisten sammelt Parallel konnte folgendes geschehen Die gleiche Taktung der 3 Map Prozesse ist unrealistisch tatsachlich uberlappen sich die Ausfuhrungen Die T wort Listen sind lokal pro Map Prozess vorhanden und werden nicht zwischen den Schritten synchronisiert 1 Iteration P1 T fest 1 neu P2 T heute 1 neu P3 T von 1 neu 2 Iteration P1 T gemauert 1 neu P2 T muss 1 neu P3 T der 1 neu 3 Iteration P1 T in 1 neu P2 T die 1 neu P3 T stirne 1 neu Im vierten Schritt sieht man dass Zwischenergebnislisten lokal fur jeden Map Prozess existieren und nicht global wiederverwendet werden konnen 4 Iteration P1 T der 1 neu der 1 Map Prozess hat noch kein T der nur P3 P2 T glocke 1 neu P3 T heiss 1 neu 5 Iteration P1 T erden 1 neu P2 T werden 1 neu P3 T rinnen 1 neu 6 Iteration P1 T steht 1 neu P2 T frisch 1 neu P3 T muss 1 neu der 3 Map Prozess hat noch kein T muss nur P2 Im siebten Schritt kommt dann zum ersten Mal vor dass ein weiteres Vorkommen in einer bereits angelegten Zwischenergebnisliste gesammelt wird 7 Schritt P1 T die 1 neu der 1 Map Prozess hat noch kein T die P2 T gesellen 1 neu P3 T der 1 1 beim 3 Map Prozess seit Iteration 2 vorhandene Liste verwenden usw Nach 21 Schritten sind alle drei Map Prozesse mit ihrer Arbeit fertig die Map Phase endet und es beginnt die Reduce Phase Die Zwischenergebnislisten die von verschiedenen Map Prozessen zu demselben Wort angelegt wurden werden zusammengefugt Fur jede der entstandenen Zwischenergebnislisten hier sortiert aufgefuhrt reduce T der 1 1 1 1 gt 4 T die 1 1 gt 2 T fest 1 gt 1 T gemauert 1 gt 1 T glocke 1 gt 1 T heiss 1 gt 1 T heute 1 gt 1 T in 1 gt 1 T muss 1 1 gt 2 T stirne 1 gt 1 T von 1 1 gt 2 fur alle verschiedenen T Listen konnen wir parallel einen Reduce Prozess starten der jeweils die Elemente aufzahlt Das Ergebnis von MapReduce sieht in etwa so aus Ausgabeliste fest 1 heute 1 von 2 gemauert 1 muss 2 der 4 in 1 die 2 Weitere Beispiele BearbeitenVerfahren Map Funktion Reduce FunktionVerteiltes grep Gibt die gefundene Zeile hit in einen Zwischenergebnisspeicher Reicht durch Identische Abbildung genauer Projektion auf die 2 Komponente Umsatzauswertung Schreibt fur jeden Beleg die Artikelnummer und den Betrag in einen Zwischenspeicher Addiert fur jede unterschiedliche Artikelnummer die Betrage zusammenDatenbanksystem Liest filtert und verarbeitet Teilmengen von Datensatzen Fuhrt Aggregatfunktionen ausVerallgemeinerung BearbeitenNachdem das Verfahren 2014 bereits zehn Jahre alt ist bietet Google seit kurzem eine Erweiterung Cloud Dataflow an die grossere Flexibilitat bietet und das Cloud Computing noch starker vorantreiben soll Siehe auch BearbeitenApache Hadoop Java Framework basierend auf dem MapReduce AlgorithmusWeblinks Bearbeiten nbsp Commons MapReduce Sammlung von Bildern Videos und Audiodateien Fachartikel Bearbeiten Jeffrey Dean Sanjay Ghemawat MapReduce Simplified Data Processing on Large Clusters OSDI 04 Sixth Symposium on Operating System Design and Implementation Dezember 2004 Online Colby Ranger Ramanan Raghuraman Arun Penmetsa Gary Bradski Christos Kozyrakis Evaluating MapReduce for Multi core and Multiprocessor Systems PDF 353 kB Stanford University Why MapReduce Matters to SQL Data Warehousing Analyse zur Einfuhrung von MapReduce SQL seitens Aster Data Systems und Greenplum Marc de Kruijf Karthikeyan Sankaralingam MapReduce for the Cell B E Architecture PDF 528 kB University of Wisconsin Madison Hung Chih Yang Ali Dasdan Ruey Lung Hsiao D Stott Parker Map Reduce Merge Simplified Relational Data Processing on Large Clusters In Proc of ACM SIGMOD 2007 S 1029 1040 Dieses Paper zeigt wie man MapReduce auf relationale Datenverarbeitung ausweitet FLuX Der Fault tolerant Load Balancing eXchange operator der UC Berkeley bietet eine Alternative zu Googles MapReduce mit Failover aber zusatzlichen Implementierungskosten Software Bearbeiten Apache Hadoop MapReduce disco Open Source Projekt Python und Erlang des Nokia Research Center DryadLINQ MapReduce Implementierung von Microsoft Research Basiert auf PLINQ und Dryad MATLAB MapReduce ist eine Hadoop fahige Implementierung von MathWorks in Matlab Plasma MapReduce ist eine Open Source MapReduce Implementierung in Ocaml mit einem eigenen verteilten Dateisystem QtConcurrent Open Source C MapReduce Implementierung nicht verteilt der Qt Development Frameworks von Digia Skynet Ruby Map Reduce BibliothekPlasmaFS Plasma MapReduce wurde von Gerd Stolpmann Darmstadt entwickelt Splunk com Data Management und Analyse Engine fur Big Data welche auf MapReduce basiert Stratosphere PACT Programmiermodell Erweiterung und Generalisierung des MapReduce ProgrammiermodellsEinzelnachweise Bearbeiten Google spotlights data center inner workings Memento des Originals vom 19 Oktober 2013 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot news cnet com CNET News Tech news blog a b Jeffrey Dean Sanjay Ghemawat MapReduce Simplified Data Processing on Large Clusters Google Labs Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages Ralf Lammel Microsoft Google s MapReduce Programming Model Revisited PDF Patent US7650331B1 System and method for efficient large scale data processing Angemeldet am 18 Juni 2004 veroffentlicht am 19 Januar 2010 Anmelder Google Inc Erfinder Jeffrey Dean Sanjay Ghemawat Normdaten Sachbegriff LCCN no2013077469 VIAF 305041139 Abgerufen von https de wikipedia org w index php title MapReduce amp oldid 231732260