Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)-何时使用其中一种?

Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)-何时使用其中一种?,hadoop,parallel-processing,mapreduce,mpi,Hadoop,Parallel Processing,Mapreduce,Mpi,我是并行计算新手,刚刚开始在AmazonAWS上试用MPI和Hadoop+MapReduce。但我不知道什么时候该用一个而不是另一个 例如,我看到的一个常见的经验法则建议可以总结为 大数据、非迭代、容错=>MapReduce 速度、小数据、迭代、非映射减速器类型=>MPI 但是,我还看到了在MPI()上实现MapReduce,它不提供容错功能,但在某些基准测试中比Hadoop上的MapReduce更有效,而且似乎可以使用核心内存外的内存处理大数据 相反,在新一代Hadoop纱线及其分布式文件

我是并行计算新手,刚刚开始在AmazonAWS上试用MPI和Hadoop+MapReduce。但我不知道什么时候该用一个而不是另一个

例如,我看到的一个常见的经验法则建议可以总结为

  • 大数据、非迭代、容错=>MapReduce
  • 速度、小数据、迭代、非映射减速器类型=>MPI
但是,我还看到了在MPI()上实现MapReduce,它不提供容错功能,但在某些基准测试中比Hadoop上的MapReduce更有效,而且似乎可以使用核心内存外的内存处理大数据

相反,在新一代Hadoop纱线及其分布式文件系统(HDFS)上也有MPI实现()

此外,MPI(分散-聚集和其他)中似乎有一些条款模仿MapReduce范例的一些特性

那么Mahout、Mesos和Spark是如何融入这一切的呢


在决定Hadoop MapReduce、MPI、Mesos、Spark和Mahout(或两者的组合)时,可以使用什么标准?

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

许多现代MPI实现可以在多个网络上运行,但针对Infiniband进行了大量优化。MapReduce的规范用例似乎位于通过以太网连接的“白盒”商品系统集群中。快速搜索“MapReduce Infiniband”会发现,在MapReduce环境中使用Infiniband是一件相对较新的事情

那么,为什么要在针对Infiniband进行了高度优化的系统上运行呢?它明显比以太网更昂贵,但在高网络争用情况下具有更高的带宽、更低的延迟和更好的扩展性(参考:)

如果您有一个应用程序对Infiniband优化的影响很敏感,而这些优化已经被烘焙到许多MPI库中,那么这可能对您很有用。如果您的应用程序对网络性能相对不敏感,并且在不需要进程间通信的计算上花费更多时间,那么MapReduce可能是一个更好的选择


如果您有机会运行基准测试,您可以在任何可用的系统上进行预测,以了解网络性能的改进有多大帮助。尝试限制您的网络:例如,将GigE降时钟到100mbit或将Infiniband QDR降时钟到DDR,在结果中画一条线,看看购买MPI优化的更快互连是否能让您达到您想要的目的。

您发布的关于在MapReduce上完成FEM的链接:

使用MPI。它就在那里抽象地陈述了这一点。他们将MPI的编程模型(非难堪的并行)与HDF相结合,以“暂存”数据以利用数据局部性


Hadoop纯粹用于令人尴尬的并行计算。任何需要进程以复杂的方式组织自己和交换数据的事情都会在Hadoop中获得糟糕的性能。这既可以从算法复杂性的角度来证明,也可以从测量的角度来证明

可能的重复?我在发布我的问题之前确实读过那个问答。在那里,你会看到,对于每个张贴的答案,都有评论说答案不准确。以第一个答案为例。MapReduce上有一些有限元实现。在我问了这个问题之后,我又遇到了一些选项(让人更加困惑),比如Akka,它似乎不局限于MapReduce这样的“明显并行”场景,同时还具有容错性,并具有Infiniband(TCP)绑定等。