Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos) - 何时使用一个而不是另一个?

时间:2015-01-06 03:11:19

标签: hadoop parallel-processing mapreduce mpi

我是并行计算的新手,刚刚开始在Amazon AWS上试用MPI和Hadoop + MapReduce。但我很困惑何时使用其中一个。

例如,我看到的一个常见经验法则可以概括为......

  • 大数据,非迭代,容错=> MapReduce
  • 速度,小数据,迭代,非Mapper-Reducer类型=> MPI

但是,我还看到了MPI上的MapReduce(MR-MPI)的实现,它不提供容错,但在Hadoop上比MapReduce更有效seems to be,并且似乎使用大数据来处理大数据核心内存。

相反,新一代Hadoop Yarn及其分布式文件系统(HDFS)也有MPI实现(MPICH2-YARN)。

此外,似乎MPI(Scatter-Gather,Checkpoint-RestartULFM和其他fault tolerance)中的条款模仿了MapReduce范例的几个特征。

Mahout,Mesos和Spark如何适应这一切?

在决定Hadoop MapReduce,MPI,Mesos,Spark和Mahout之间(或其组合)时可以使用什么标准?

2 个答案:

答案 0 :(得分:10)

这个决定可能有很好的技术标准,但我还没有看到任何发表的决定。似乎存在一种文化差异,它可以理解MapReduce用于筛选企业环境中的数据,而科学工作负载则使用MPI。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是关于如何找到的一些想法:

许多现代MPI实现可以在多个网络上运行,但针对Infiniband进行了大量优化。 MapReduce的规范用例似乎是在"白盒"通过以太网连接的商品系统。快速搜索" MapReduce Infiniband"导致http://dl.acm.org/citation.cfm?id=2511027表明在MapReduce环境中使用Infiniband是一个相对较新的事情。

那你为什么要在一个为Infiniband高度优化的系统上运行呢?它比以太网贵得多,但在高网络争用的情况下具有更高的带宽,更低的延迟和更好的扩展性(参考:http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf)。

如果您的应用程序对已经融入许多MPI库的Infiniband优化效果敏感,那么这可能对您有用。如果您的应用对网络性能相对不敏感,并且花费更多时间在不需要进程间通信的计算上,那么MapReduce可能是更好的选择。

如果您有机会运行基准测试,您可以在可用的任何系统上进行投影,以查看网络性能有多大改善。尝试限制您的网络:例如,将GigE降至100mbit或Infiniband QDR至DDR,在结果中划一条线,看看购买由MPI优化的更快的互连是否能让您到达目的地。

答案 1 :(得分:7)

您在MapReduce上发布的有关FEM的链接:http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6188175&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6188175

使用MPI。它在摘要中说明了它。他们将MPI的编程模型(非令人尴尬的并行)与HDFS结合到了#34; stage"利用数据位置的数据。

Hadoop纯粹是为了令人尴尬的并行计算。任何需要进程组织自己并以复杂方式交换数据的东西都将通过Hadoop获得废话。这可以从算法复杂性的角度以及从测量的角度来证明。