Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)——什么时候使用其中一个?

标签 hadoop parallel-processing mapreduce mpi

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

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

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

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

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

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

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

在 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout 之间(或它们的组合)之间做出决定时可以使用什么标准?

最佳答案

这个决定可能有很好的技术标准,但我还没有看到任何关于它的发布。似乎存在文化差异,据了解 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 优化的更快的互连是否能让您到达想要的位置。

关于Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos)——什么时候使用其中一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791531/

相关文章:

hadoop - 将 Hive 表导出到 hdfs 中的 csv/tsv

hadoop - 如何建立Hbase的RegionServer来掌握

matlab - 在 matlab 中使用多个 GPU

c++ - OpenMP - Easy Loop,但仍然是无限的?

hadoop - 在 hadoop 框架中排序

matlab - 如何在调用mapreduce函数时将参数传递给map函数?

hadoop - hadoop 映射操作如何管理 HDFS 集群上的数据冗余?

hadoop - YARN 阈值错误

hadoop - 区分暗数据和大数据的因素有哪些?

python - 如何并行迭代 SimPy 模拟?