我是并行计算新手,刚刚开始在 Amazon AWS 上尝试 MPI 和 Hadoop+MapReduce。但我对何时使用其中一种而不是另一种感到困惑。
例如,我看到的一个常见的经验法则可以总结为......
- 大数据、非迭代、容错=> MapReduce
- 速度、小数据、迭代、非Mapper-Reducer类型=> MPI
但是后来,我也看到了 MPI 上 MapReduce 的实现(MR-MPI http://mapreduce.sandia.gov/)不提供容错能力,但是似乎是 http://dx.doi.org/10.1016/j.parco.2011.02.004在某些基准测试中比 Hadoop 上的 MapReduce 更高效,并且似乎可以使用核外内存处理大数据。
相反,也有 MPI 实现(MPICH2-纱线 https://github.com/alibaba/mpich2-yarn)在新一代 Hadoop Yarn 及其分布式文件系统 (HDFS) 上。
此外,MPI 中似乎有规定(Scatter-Gather、检查点-重启 http://fault-tolerance.org/2014/11/15/tutorial-sc14-fault-tolerance-for-hpc-theory-and-practice/, ULFM http://www.anl.gov/events/fault-tolerant-mapreduce-mpi-using-user-level-failure-mitigation和别的容错 https://www.open-mpi.org/faq/?category=ft)模仿 MapReduce 范式的几个特征。
Mahout、Mesos 和 Spark 如何适应这一切?
在 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout(或组合)之间做出选择时可以使用什么标准?
这个决定可能有很好的技术标准,但我还没有看到任何关于它的文章。似乎存在文化分歧,人们认为 MapReduce 用于筛选企业环境中的数据,而科学工作负载则使用 MPI。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是关于如何找出答案的一些想法:
许多现代 MPI 实现可以在多个网络上运行,但针对 Infiniband 进行了大量优化。 MapReduce 的典型用例似乎是通过以太网连接的“白盒”商品系统集群。快速搜索“MapReduce Infiniband”会导致http://dl.acm.org/itation.cfm?id=2511027 http://dl.acm.org/citation.cfm?id=2511027这表明在 MapReduce 环境中使用 Infiniband 是一个相对较新的事物。
那么为什么要在针对 Infiniband 高度优化的系统上运行呢?它比以太网昂贵得多,但具有更高的带宽、更低的延迟,并且在网络争用较高的情况下可以更好地扩展(参考:http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf).
如果您的应用程序对已融入许多 MPI 库的 Infiniband 优化效果敏感,也许这对您有用。如果您的应用程序对网络性能相对不敏感,并且将更多时间花在不需要进程之间通信的计算上,那么 MapReduce 可能是更好的选择。
如果您有机会运行基准测试,您可以对可用的任何系统进行预测,以了解网络性能的改善有多大帮助。尝试限制您的网络:例如,将 GigE 降频至 100mbit,或将 Infiniband QDR 降频至 DDR,在结果中画一条线,看看购买由 MPI 优化的更快的互连是否能让您达到您想要的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)