Hallo zusammen. In dieser Aufgabe sollt ihr ein Framework für das MapReduce-Programmiermodell
implementieren. Dafür schauen wir uns in diesem Video an, was die Grundlagen von MapReduce
sind, wie der Ablauf eines MapReduce-Jobs so ist und welche Aufgaben das Framework dabei
hat.
Was ist eigentlich MapReduce? Auch wenn es vor gar nicht so langer Zeit noch Rocket Science
war, hat mittlerweile wahrscheinlich jeder von euch schon mal von MapReduce gehört oder
sogar in einer Algorithmikveranstaltung behandelt. Zusammenfassend ist MapReduce ein Programmiermodell,
um große Datenmengen parallel und verteilt zu bearbeiten. Und das mit einer möglichst
einfachen Struktur für den Anwendungsentwickler. Das Kernkonzept von MapReduce sind dabei,
wenig überraschend, die beiden namensgebenden Bausteine Map und Reduce. Diese kommen ursprünglich
aus der funktionalen Programmierung. Nachdem aber immer mehr ursprünglich nicht-funktionale
Sprachen funktionale Konstrukte integrieren, so wie Java seit Java 8, bieten die meisten
modernen Sprachen mittlerweile auch diese Art der Datenverarbeitung an.
Eine Map-Funktion hat die Aufgabe, ein Eingabedatum auf ein Ausgabedatum abzubilden, daher auch
der Name Map. Die Abbildungsfunktion an sich ist dabei erstmal nebensächlich. Wichtig
ist aber, dass alle Eingabe-Elemente unabhängig voneinander betrachtet werden können und
zu einem oder mehreren Ausgabe-Elementen umgewandelt werden. Die Reduce-Funktion ist das Gegenstück
dazu. Sie nimmt üblicherweise mehrere Eingabedaten und reduziert diese in ein Ausgabedatum.
Da das Modell auf eine parallele Verarbeitung abzielt, kann es natürlich mehrere Instanzen
der Reduce-Funktion geben, die sich jeweils um ihre eigene Menge an Datensätzen kümmern
und dann noch getrennte Ausgaben haben. Im Verlauf dieses Videos gehen wir MapReduce
aber auch noch Schritt für Schritt an einem Beispiel durch.
Auch wenn diese beiden Funktionen das Herzstück von MapReduce sind, gibt es doch noch andere
Aufgaben zu bewältigen, wenn man ein Problem mit MapReduce lösen möchte. Zuallererst,
bevor man überhaupt an das Programmieren denken kann, muss ein Problem erstmal in
einzelne Map- und Reduce-Schritte zerlegt werden. Während das bei manchen Programmen
eine nahezu triviale Aufgabe ist, wie zum Beispiel das Zählen oder Aufsummieren von
irgendwelchen Eingabe-Elementen, kann das in anderen Fällen eine echte Kopfnuss sein
und benötigt teilweise ganze Kaskaden von aneinander gehängten MapReduce-Jobs. Wenn
man das Problem in einzelne MapReduce-Schritte zerteilt hat, kann der Entwickler die jeweiligen
Schritte implementieren. Das ist der Teil, an den die meisten Leute denken, wenn sie
MapReduce hören. Jetzt braucht es aber natürlich auch noch
eine Komponente, die sich darum kümmert, dass das Ganze auch zusammen funktioniert,
die also die Daten an die jeweiligen Map- und Reduce-Funktion verteilt, was sich um
die parallele Ausführung kümmert und so weiter. Hier kommt ein MapReduce-Framework ins Spiel,
das was ihr in der Übungsaufgabe auch implementieren werdet.
Die Idee des MapReduce-Frameworks hat Google ursprünglich 2004 vorgestellt, und zwar
im namensgebenden Papier MapReduce Simplified Data Processing on Large Clusters. Auch wenn
die ursprüngliche Implementierung von Google nicht öffentlich zugänglich war, sind relativ
schnell zahlreiche Open-Source-Implementierungen aus dem Boden geschossen, so wie das Apache
Hadoop-Framework in 2006. Apache Hadoop hat sich mittlerweile auch zum
Platzsearch im Bereich MapReduce hochgearbeitet. Selbst andere Frameworks, wie das 2015 von
Google für öffentliche MR4C, kurz für MapReduce4C, verwendet Hadoop zum Ausführen seiner Jobs.
Es gibt auch andere eigenständige MapReduce-Frameworks, wie das 2008 von Nokia entwickelte Disco.
Diese haben sich aber bei weitem nicht die Bekanntheit von der Apache Hadoop erarbeitet.
Die Beliebtheit der offenen MapReduce-Frameworks ist einfach zu erklären. Sie erlauben es,
riesige Mengen an Daten auf eine sehr effiziente Art und Weise zu verarbeiten und bieten gleichzeitig
relativ einfach Schnittstellen. So muss der Anwendungsentwickler im einfachsten Fall nur
die beiden Funktionen Map und Reduce implementieren und kann seinen Job dann direkt starten.
In der Übung sollt ihr aber natürlich das Framework an sich implementieren. Ihr habt
Presenters
Zugänglich über
Offener Zugang
Dauer
00:15:52 Min
Aufnahmedatum
2020-12-22
Hochgeladen am
2020-12-22 13:09:53
Sprache
de-DE
Übersicht und Ablauf von MapReduce