Hadoop MapReduce vs MPI ( vs Spark vs Mahout vs Mesos) - kiedy używać jednego nad drugim?

Jestem nowy w obliczeniach równoległych i dopiero zaczynam wypróbowywać MPI i Hadoop + MapReduce na Amazon AWS. Ale nie wiem, kiedy użyć jednego nad drugim.

Na przykład, jedna wspólna zasada porady kciuka widzę można podsumować jako...

  • Big data, non-iterative, fault tolerant = > MapReduce
  • Prędkość, małe dane, iteracyjne, nie-Mapper-Reducer type = > MPI

Ale widzę też implementację MapReduce na MPI (MR-MPI ), która robi nie zapewnia tolerancji błędów, ale wydaje się być bardziej wydajny w niektórych benchmarkach niż MapReduce na Hadoop i wydaje się obsługiwać duże dane za pomocą pamięci poza rdzeniem.

Odwrotnie, istnieją również implementacje MPI ( MPICH2-YARN) na nowej generacji Hadoop Yarn z jego rozproszonym systemem plików (HDFS).

Poza tym, wydaje się, że istnieją przepisy w MPI (Scatter-Gather, Checkpoint-Restart, ULFM i inne tolerancja błędów), które naśladować kilka cech paradygmatu MapReduce.

A jak Mahout, Mezos i Spark pasują do tego wszystkiego?

Jakie kryteria można zastosować przy podejmowaniu decyzji pomiędzy (lub kombinacją) Hadoop MapReduce, MPI, Mesos, Spark i Mahout?

Author: crackjack, 2015-01-06

2 answers

Mogą być dobre kryteria techniczne dla tej decyzji, ale nie widziałem nic opublikowanego na jej temat. Wydaje się, że istnieje podział kulturowy, w którym rozumie się, że MapReduce jest używany do przesiewania danych w środowiskach korporacyjnych, podczas gdy obciążenia naukowe używają MPI. Może to wynikać z podstawowej wrażliwości tych obciążeń na wydajność sieci. Oto kilka przemyśleń na temat tego, jak się tego dowiedzieć:

Wiele nowoczesnych implementacji MPI może działać w wielu sieciach, ale są mocno zoptymalizowany pod kątem Infiniband. Canonical use case dla MapReduce wydaje się być w klastrze" white box " systemów towarowych podłączonych przez ethernet. Szybkie wyszukiwanie na "MapReduce Infiniband" prowadzi do http://dl.acm.org/citation.cfm?id=2511027 co sugeruje, że użycie Infiniband w środowisku MapReduce jest stosunkowo nową rzeczą.

Więc dlaczego chcesz uruchomić na systemie, który jest wysoce zoptymalizowany dla Infiniband? Jest znacznie droższy od Ethernetu, ale ma większa przepustowość, mniejsze opóźnienia i lepsze skalowanie w przypadku dużej konkurencji sieciowej (ref: http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf).

Jeśli masz aplikację, która byłaby wrażliwa na te efekty optymalizacji dla Infiniband, które są już upieczone w wielu bibliotekach MPI, może byłoby to dla Ciebie przydatne. Jeśli Twoja aplikacja jest stosunkowo niewrażliwa na wydajność sieci i poświęca więcej czasu na obliczenia, które nie wymagają komunikacji pomiędzy procesami może lepszym wyborem będzie MapReduce.

Jeśli masz możliwość uruchomienia benchmarków, możesz wykonać projekcję na dowolnym systemie, który masz do dyspozycji, aby zobaczyć, jak bardzo poprawiona wydajność sieci mogłaby pomóc. Spróbuj Dławić swoją sieć: downclock GigE do 100Mbit lub InfiniBand QDR do DDR, na przykład, narysuj linię przez wyniki i sprawdź, czy zakup szybszego interkonektu zoptymalizowanego przez MPI doprowadzi cię tam, gdzie chcesz iść.

 10
Author: Aaron Altman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-08 12:38:03

Link, który napisałeś o fem robionym na MapReduce: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6188175&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6188175

Używa MPI. Stwierdza to w abstrakcji. Połączyli model programowania MPI (nieinwazyjnie równoległy) z HDFS, aby" etapować " dane w celu wykorzystania lokalizacji danych.

Hadoop służy wyłącznie do obliczeń równoległych. Wszystko, co wymaga procesy organizowania się i wymiany danych w złożony sposób uzyskają gównianą wydajność z Hadoop. Można to wykazać zarówno z punktu widzenia złożoności algorytmu, jak i z punktu widzenia pomiaru.

 7
Author: J.D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-21 17:49:59