1 - MapReduce-Framework [ID:27110]
50 von 208 angezeigt

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

Teil eines Kapitels:
MapReduce

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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen