MapReduce: Vereinfachte Datenverarbeitung auf großen Clustern

MapReduce ist ein Programmiermodell und eine zugehörige Implementierung zur Verarbeitung und Generierung großer Datensätze. Benutzer geben eine Map-Funktion an, die ein Schlüssel /Wert-Paar verarbeitet, um einen Satz von Zwischenschlüssel/Wert-Paaren zu generieren, und eine Reduce-Funktion, die alle Zwischenwerte zusammenführt, die demselben Zwischenschlüssel zugeordnet sind. Viele reale Aufgaben sind in diesem Modell ausdruckbar, wie in der Arbeit gezeigt.

In diesem funktionalen Stil geschriebene Programme werden automatisch parallelisiert und auf einem großen Cluster von Commodity-Maschinen ausgeführt. Das Laufzeitsystem kümmert sich um die Details der Partitionierung der Eingabedaten, der Planung der Ausführung des Programms auf einer Reihe von Maschinen, der Behandlung von Maschinenausfällen und der Verwaltung der erforderlichen Kommunikation zwischen Maschinen. Dadurch können Programmierer ohne Erfahrung mit parallelen und verteilten Systemen die Ressourcen eines großen verteilten Systems problemlos nutzen.

Unsere Implementierung von MapReduce läuft auf einem großen Cluster von Commodity-Maschinen und ist hoch skalierbar: Eine typische MapReduce-Berechnung verarbeitet viele Terabyte an Daten auf Tausenden von Maschinen. Programmierer finden das System einfach zu bedienen: Hunderte von MapReduce-Programmen wurden implementiert und mehr als tausend MapReduce-Jobs werden täglich in den Clustern von Google ausgeführt.

HTML-Folien