2010-03-29 14 views

Antwort

31

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.

+8

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

+2

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. –

+0

Was ist der Unterschied zwischen fork/join & mapreduce außerhalb des Kontexts von Java? – user2001850

10

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.