Hadoop MapReduce vs MPI (vs Spark vs Mahout vs Sofort) - Wann verwendet man einen über den anderen?
Ich bin neu auf parallel-computing und nur ab und zu versuchen, MPI und Hadoop+MapReduce auf Amazon AWS. Aber ich bin verwirrt darüber, Wann eine über die andere.
Beispielsweise eine Allgemeine Faustregel Rat, den ich sehen, kann wie folgt zusammengefasst werden...
- Big data, nicht-iterative, fault tolerant => MapReduce
- Geschwindigkeit, kleine Daten, iterativen, nicht-Mapper-Reducer type => MPI
Aber dann sehe ich auch, Implementierung von MapReduce auf MPI ( MR-MPI ), die keine Fehlertoleranz, aber scheint effizienter auf einige benchmarks als MapReduce auf Hadoop, und scheint zu behandeln, big data, out-of-core-memory.
Umgekehrt gibt es aber auch MPI-Implementierungen (MPICH2-GARN) auf neue generation von Hadoop-Garn mit seiner distributed file system (HDFS).
Außerdem scheint es zu sein Bestimmungen im MPI (Scatter-Gather, Checkpoint-Neustart, ULFM und andere Fehlertoleranz), die nachahmen einige features von MapReduce-Paradigma.
Und wie funktioniert Mahout, Sofort und Funken passen alles?
Welche Kriterien können verwendet werden, wenn die Entscheidung zwischen (oder combo) Hadoop MapReduce, MPI, Sofort, Funke und Mahout?
- möglich dup stackoverflow.com/questions/1530490/... ?
- Ich habe gelesen, dass die q&a vor der Buchung mine. Dort werden Sie sehen, dass für jede Antwort gepostet, es gibt Kommentare die sagen, dass die Antwort ist nicht korrekt. Nehmen Sie die erste Antwort, zum Beispiel. Es sind Finite-Elemente-Implementierungen mit MapReduce 1, 2.
- Nachdem ich gebeten hatte, diese Frage, stieß ich auf ein paar mehr Optionen (um die Verwirrung hinzuzufügen) - wie Akka, die scheinen nicht beschränkt werden ", die offensichtlich parallel" - Szenarien wie MapReduce, aber auch nicht fehlertolerant und haben Bindungen für Infiniband (TCP) etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es könnte gut sein, technische Kriterien für diese Entscheidung, aber ich habe nicht gesehen, was auf ihn veröffentlicht. Es scheint eine kulturelle Kluft, wo es verstanden wird, dass MapReduce wird für das durchforsten von Daten in Unternehmens-Umgebungen, während wissenschaftliche workloads verwenden MPI. Das kann wegen der Sensibilität dieser workloads, um Netzwerk-performance. Hier sind ein paar Gedanken, wie diese zu finden:
Viele moderne MPI-Implementierungen laufen über mehrere Netzwerke aber sind stark optimiert für Infiniband. Der kanonische Fall für MapReduce zu sein scheint in einem cluster von "white-box" - Ware-Systeme über ethernet miteinander verbunden. Eine schnelle Suche auf "MapReduce Infiniband" führt zu http://dl.acm.org/citation.cfm?id=2511027 was darauf hindeutet, dass die Verwendung von Infiniband in einem MapReduce-Umgebung ist eine relativ neue Sache.
Also warum würden Sie wollen, um die auf einem system laufen, das ist hoch optimiert für Infiniband? Es ist deutlich teurer als ethernet, aber hat eine höhere Bandbreite, geringere Latenzzeiten und skaliert besser in Fällen von high-Netzwerk-Streit (ref: http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf).
Wenn Sie eine Anwendung haben, die wäre empfindlich auf die Effekte der Optimierungen für Infiniband, dass bereits gebacken in vielen MPI-Bibliotheken, vielleicht wäre das nützlich für Sie. Wenn Ihre app ist relativ unempfindlich gegen Netzwerk-performance und verbringt mehr Zeit auf Berechnungen, die nicht brauchen, Kommunikation zwischen Prozessen, vielleicht MapReduce ist eine bessere Wahl.
Wenn Sie die Möglichkeit haben, führen Sie die benchmarks, die Sie tun könnten, eine Projektion auf welches system Sie zur Verfügung haben, um zu sehen, wie viel verbessert Netzwerk-performance helfen würde. Versuchen Sie die Drosselung Ihres Netzwerks: downclock GigE 100mbit oder Infiniband QDR zur DDR, zum Beispiel, ziehen Sie eine Linie durch die Ergebnisse und sehen, ob der Kauf ein schneller interconnect-optimiert MPI bekommen würde, wo Sie wollen zu gehen.
Den link, den Sie gepostet über FEM getan, MapReduce: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6188175&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6188175
verwendet MPI. Darin heißt es, es richtig, es in die Zusammenfassung. Sie kombinierten am MPI-Programmiermodell (nicht-peinlich parallel) mit HDFS auf der "Bühne", die Daten zu nutzen, Daten Lokalität.
Hadoop ist rein für peinlich parallele Berechnungen. Etwas, das erfordert, dass Prozesse sich selbst zu organisieren und exchange-Daten in komplexer Weise Misten Leistung mit Hadoop. Dies zeigt sich sowohl von einer algorithmischen Komplexität Sicht, und auch aus messtechnischer Sicht.