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

Posted

技术标签:

【中文标题】Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos) - 何时使用一个而不是另一个?【英文标题】:Hadoop MapReduce vs MPI (vs Spark vs Mahout vs Mesos) - When to use one over the other? 【发布时间】:2015-03-03 16:46:56 【问题描述】:

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

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

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

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

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

此外,MPI 中似乎有一些规定(Scatter-Gather、Checkpoint-Restart、ULFM 和其他 fault tolerance)模仿 MapReduce 范例的几个特征。

Mahout、Mesos 和 Spark 如何融入这一切?

在选择 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout(或两者的组合)时可以使用哪些标准?

【问题讨论】:

***.com/questions/1530490/… 的可能重复? 在发布我的之前,我确实阅读了该问答。在那里,您会看到对于发布的每个答案,都有 cmets 说答案不准确。以第一个答案为例。 MapReduce 上有有限元实现1、2。 在我问了这个问题之后,我遇到了更多的选择(以增加混乱)——比如 Akka,它似乎并不局限于像 MapReduce 这样的“明显并行”的场景,同时也具有容错性并具有 Infiniband (TCP) 等的绑定。 【参考方案1】:

这个决定可能有很好的技术标准,但我还没有看到任何关于它的发布。似乎存在文化分歧,人们认为 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)。

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

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

【讨论】:

【参考方案2】:

您发布的有关在 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 相结合,以“暂存”数据以利用数据局部性。

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

【讨论】:

以上是关于Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos) - 何时使用一个而不是另一个?的主要内容,如果未能解决你的问题,请参考以下文章

为啥Spark比MapReduce快?

大数据系列9:mpi4py高性能计算

MapReduce 知识

MapReduce(6)特性

spark VS mapreduce

MapReduce 与 HBase 的关系?