Heim > Java > javaLernprogramm > MapReduce-Prinzip

MapReduce-Prinzip

(*-*)浩
Freigeben: 2019-06-05 14:15:18
Original
8410 Leute haben es durchsucht

MapReduce ist ein Programmiermodell, das für parallele Operationen an großen Datensätzen (größer als 1 TB) verwendet wird. Die Konzepte „Map“ und „Reduce“, die ihre Hauptideen sind, sind aus funktionalen Programmiersprachen entlehnt, ebenso wie Funktionen, die aus Vektorprogrammiersprachen entlehnt sind.

MapReduce-Prinzip

Es erleichtert Programmierern erheblich, ihre eigenen Programme auf verteilten Systemen auszuführen, ohne verteilte parallele Programmierung zu kennen. Die aktuelle Softwareimplementierung spezifiziert eine Map-Funktion, um einen Satz von Schlüssel-Wert-Paaren einem neuen Satz von Schlüssel-Wert-Paaren zuzuordnen, und spezifiziert eine gleichzeitige Reduzierfunktion, um sicherzustellen, dass alle zugeordneten Schlüssel-Wert-Paare denselben Satz haben von Schlüsseln.

Funktionsprinzip(Empfohlenes Lernen: Java-Video-Tutorial)

MapReduce-Ausführungsprozess

MapReduce-PrinzipDas Bild oben ist das Flussdiagramm im Papier. Alles beginnt beim Benutzerprogramm oben. Das Benutzerprogramm ist mit der MapReduce-Bibliothek verknüpft und implementiert die grundlegendste Map-Funktion und Reduce-Funktion. Die Ausführungsreihenfolge ist in der Abbildung mit Zahlen gekennzeichnet.

1. Die MapReduce-Bibliothek unterteilt zunächst die Eingabedatei des Benutzerprogramms in M ​​Teile (M ist normalerweise 16 MB bis 64 MB groß, wie auf der linken Seite der Abbildung gezeigt). in split0~4; dann verwenden Sie fork, um den Benutzerprozess auf andere Maschinen im Cluster zu kopieren.

2. Eine Kopie des Benutzerprogramms wird als Master bezeichnet, und die anderen werden als Worker bezeichnet. Der Master ist für die Planung und Zuweisung von Jobs (Jobs zuordnen oder Jobs reduzieren) für die Anzahl der Worker verantwortlich ebenfalls vom Benutzer festgelegt werden.

3. Der dem Map-Job zugewiesene Worker beginnt mit dem Lesen der Eingabedaten des entsprechenden Shards. Die Anzahl der Map-Jobs wird durch M bestimmt und entspricht der Eins-zu-Eins-Aufteilung des Map-Jobs Aus den Eingabedaten wird jedes Schlüssel-Wert-Paar als Parameter an die Kartenfunktion übergeben und die von der Kartenfunktion generierten Zwischen-Schlüssel-Wert-Paare werden im Speicher zwischengespeichert.

4. Die zwischengespeicherten Zwischenschlüssel-Wert-Paare werden regelmäßig auf die lokale Festplatte geschrieben und in R-Bereiche unterteilt. In Zukunft wird jeder Bereich einem Reduzieren entsprechen Job; diese Der Standort des Zwischenschlüssel-Wert-Paares wird dem Master mitgeteilt, und der Master ist für die Weiterleitung der Informationen an den Reduce-Worker verantwortlich.

5. Der Master benachrichtigt den Worker, dem der Reduce-Job zugewiesen ist, wo sich die Partition befindet, für die er verantwortlich ist (es muss mehr als ein Ort sein, und die von jedem Map-Job generierten Zwischenschlüssel-Wert-Paare können zugeordnet werden an alle R verschiedenen Partitionen) Nachdem der Reduce-Worker alle Zwischen-Schlüssel-Wert-Paare gelesen hat, für die er verantwortlich ist, sortiert er sie zunächst so, dass Schlüssel-Wert-Paare mit demselben Schlüssel zusammengefasst werden. Da unterschiedliche Schlüssel möglicherweise derselben Partition, also demselben Reduce-Job (der weniger Partitionen hat), zugeordnet werden können, ist eine Sortierung erforderlich.

6. Der Reduce-Worker durchläuft die sortierten Zwischenschlüssel-Wert-Paare. Für jeden eindeutigen Schlüssel übergibt er den Schlüssel und den zugehörigen Wert an die Reduce-Funktion dieser Partition in der Datei.

7. Wenn alle Map- und Reduce-Jobs abgeschlossen sind, weckt der Master das echte Benutzerprogramm und der MapReduce-Funktionsaufruf gibt den Code des Benutzerprogramms zurück.

Nachdem alle Ausführungen abgeschlossen sind, wird die MapReduce-Ausgabe in den Ausgabedateien der R-Partitionen platziert (jede entspricht einem Reduce-Job). Benutzer müssen diese R-Dateien normalerweise nicht zusammenführen, sondern verwenden sie als Eingabe für ein anderes MapReduce-Programm zur Verarbeitung. Während des gesamten Prozesses stammen die Eingabedaten vom zugrunde liegenden verteilten Dateisystem (GFS), die Zwischendaten werden im lokalen Dateisystem abgelegt und die endgültigen Ausgabedaten werden in das zugrunde liegende verteilte Dateisystem (GFS) geschrieben. Und wir sollten auf den Unterschied zwischen Map/Reduce-Jobs und Map/Reduce-Funktionen achten: Map-Jobs verarbeiten einen Shard von Eingabedaten und müssen die Map-Funktion möglicherweise mehrmals aufrufen, um jedes eingegebene Schlüssel-Wert-Paar zu verarbeiten Zwischenschlüssel einer Partition Wertepaare, bei denen die Reduce-Funktion einmal für jeden unterschiedlichen Schlüssel aufgerufen wird und der Reduce-Job schließlich einer Ausgabedatei entspricht.

Weitere technische Artikel zum Thema Java finden Sie in der Spalte Java-Entwicklungs-Tutorials.

Das obige ist der detaillierte Inhalt vonMapReduce-Prinzip. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage