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?
我是并行计算的新手,刚开始在 Amazon AWS 上试用 MPI 和 Hadoop+MapReduce。但是我很困惑什么时候用一个而不是另一个。
例如,我看到的一个常见的经验法则建议可以概括为...
- 大数据,非迭代,容错=> MapReduce
- 速度,小数据,迭代,非Mapper-Reducer类型=> MPI
但是,我也看到了 MapReduce 在 MPI 上的实现(MR-MPI) which does not provide fault tolerance but seems to be 在某些基准测试中比在 Hadoop 上的 MapReduce 更有效,并且似乎使用核外内存处理大数据。
相反,新一代 Hadoop Yarn 及其分布式文件系统 (HDFS) 上也有 MPI 实现 (MPICH2-YARN)。
此外,MPI(Scatter-Gather,Checkpoint-Restart, ULFM and other fault tolerance)中似乎有一些条款模仿了 MapReduce 范例的几个特性。
Mahout、Mesos 和 Spark 如何适应这一切?
在 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout(或它们的组合)之间做出决定时可以使用什么标准?
这个决定可能有很好的技术标准,但我还没有看到任何关于它的发布。似乎存在文化差异,据了解 MapReduce 用于筛选企业环境中的数据,而科学工作负载使用 MPI。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是关于如何找出答案的一些想法:
许多现代 MPI 实现可以 运行 在多个网络上运行,但针对 Infiniband 进行了大量优化。 MapReduce 的规范用例似乎是在通过以太网连接的 "white box" 商品系统集群中。快速搜索 "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 优化的更快互连是否能让您到达想要的位置。
您发布的关于在 MapReduce 上完成 FEM 的link:Link
使用 MPI。它在摘要中说明了这一点。他们将 MPI 的编程模型(非令人尴尬的并行)与 HDFS 相结合,以“暂存”数据以利用数据局部性。
Hadoop 纯粹用于令人尴尬的并行计算。任何需要进程以复杂方式组织自身和交换数据的东西都会在 Hadoop 中获得糟糕的性能。这既可以从算法复杂性的角度,也可以从测量的角度来证明。
我是并行计算的新手,刚开始在 Amazon AWS 上试用 MPI 和 Hadoop+MapReduce。但是我很困惑什么时候用一个而不是另一个。
例如,我看到的一个常见的经验法则建议可以概括为...
- 大数据,非迭代,容错=> MapReduce
- 速度,小数据,迭代,非Mapper-Reducer类型=> MPI
但是,我也看到了 MapReduce 在 MPI 上的实现(MR-MPI) which does not provide fault tolerance but seems to be 在某些基准测试中比在 Hadoop 上的 MapReduce 更有效,并且似乎使用核外内存处理大数据。
相反,新一代 Hadoop Yarn 及其分布式文件系统 (HDFS) 上也有 MPI 实现 (MPICH2-YARN)。
此外,MPI(Scatter-Gather,Checkpoint-Restart, ULFM and other fault tolerance)中似乎有一些条款模仿了 MapReduce 范例的几个特性。
Mahout、Mesos 和 Spark 如何适应这一切?
在 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout(或它们的组合)之间做出决定时可以使用什么标准?
这个决定可能有很好的技术标准,但我还没有看到任何关于它的发布。似乎存在文化差异,据了解 MapReduce 用于筛选企业环境中的数据,而科学工作负载使用 MPI。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是关于如何找出答案的一些想法:
许多现代 MPI 实现可以 运行 在多个网络上运行,但针对 Infiniband 进行了大量优化。 MapReduce 的规范用例似乎是在通过以太网连接的 "white box" 商品系统集群中。快速搜索 "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 优化的更快互连是否能让您到达想要的位置。
您发布的关于在 MapReduce 上完成 FEM 的link:Link
使用 MPI。它在摘要中说明了这一点。他们将 MPI 的编程模型(非令人尴尬的并行)与 HDFS 相结合,以“暂存”数据以利用数据局部性。
Hadoop 纯粹用于令人尴尬的并行计算。任何需要进程以复杂方式组织自身和交换数据的东西都会在 Hadoop 中获得糟糕的性能。这既可以从算法复杂性的角度,也可以从测量的角度来证明。