Was ist der Hauptunterschied zwischen Fork/Join und Map/Reduce?Unterschied zwischen Fork/Join und Map/Reduce
Unterscheiden sie sich in der Art der Zerlegung und Verteilung (Daten vs. Berechnung)?
Was ist der Hauptunterschied zwischen Fork/Join und Map/Reduce?Unterschied zwischen Fork/Join und Map/Reduce
Unterscheiden sie sich in der Art der Zerlegung und Verteilung (Daten vs. Berechnung)?
Ein wichtiger Unterschied besteht darin, dass F-J für die Arbeit mit einer einzelnen Java-VM konzipiert ist, während M-R explizit für die Arbeit auf einem großen Cluster von Computern entwickelt wurde. Dies sind sehr unterschiedliche Szenarien.
F-J bietet Funktionen, um eine Aufgabe in mehrere Subtasks auf rekursive Weise zu partitionieren; mehr Stufen, Möglichkeit der "Inter-Gabel" -Kommunikation in diesem Stadium, viel mehr traditionelle Programmierung. Erstreckt sich (zumindest in der Zeitung) nicht über eine einzelne Maschine hinaus. Großartig für die Nutzung Ihres Achtkerns.
M-R macht nur einen großen Split, wobei die abgebildeten Splits überhaupt nicht miteinander kommunizieren und dann alles zusammen reduzieren. Eine einzige Ebene, keine Inter-Split-Kommunikation, bis sie reduziert und massiv skalierbar ist. Hervorragend geeignet, um Ihren Anteil an der Cloud zu nutzen.
Es gibt eine ganze wissenschaftliche Arbeit zu diesem Thema, Comparing Fork/Join and MapReduce.
Der Artikel vergleicht die Leistung, Skalierbarkeit und Programmierbarkeit von drei parallelen Paradigmen: fork/join, MapReduce und einem hybriden Ansatz.
Was sie finden, ist im Grunde, dass Java Gabel/beitreten niedrigen Start Latenz und skaliert gut für kleine Eingänge (< 5MB), aber es kann nicht größer Eingänge aufgrund der Größenbeschränkungen von Shared-Memory, einzelnen Knoten Architekturen verarbeiten. Auf der anderen Seite hat MapReduce eine erhebliche Startwartezeit (mehrere zehn Sekunden), skaliert aber gut für viel größere Eingaben (> 100 MB) in einem Rechencluster.
Aber es gibt viel mehr zu lesen, wenn Sie dafür bereit sind.
Genauer gesagt ermöglicht F-J den Mitarbeitern, Teilaufgaben aus den Warteschlangen der anderen zu stehlen. Dies ist nicht möglich, wenn sich die Worker-Threads auf unterschiedlichen Computern befinden (und daher keinen gemeinsamen Speicher haben). – finnw
Laut dem [MapReduce Wikipedia-Eintrag] (http://en.wikipedia.org/wiki/MapReduce) ist MR nicht verfügbar notwendigerweise beschränkt auf eine einzelne Stufe von gespaltenen Aufgaben. –
Was ist der Unterschied zwischen fork/join & mapreduce außerhalb des Kontexts von Java? – user2001850