什么是一些情景,其MPI是一个更适合比的MapReduce?(What are some scena

2019-07-21 05:28发布

据我了解,MPI让我在集群中的不同节点究竟是如何将沟通更多的控制。

在MapReduce的/ Hadoop的,每个节点执行一些计算,与其他节点交换数据,然后整理其结果分区。 看似简单,但因为你可以迭代的过程中,即使是像K-手段或PageRank算法拟合模型相当不错。 在与调度的局部性的分布式文件系统,其性能明显好。 相比较而言,MPI让我在节点如何发送消息给对方明确的控制。

任何人都可以描述一个集群的编程场景,更一般的MPI模型是在简单的MapReduce模型有明显的优势?

Answer 1:

几乎所有的科学代码 - 有限差分,有限元等哪一种导致圆形的答案,任何分布式程序不容易映射到的MapReduce将与更广泛的MPI模型可以更好地实现。 不知道这是给你多大的帮助,我会downvote这个答案之后我张贴。



Answer 2:

Athough,这个问题已经回答了,我想补充/重申一个很重要的一点。

MPI是最适合于需要大量进程间通信的问题。

当数据变大(PB级,任何人吗?),而且很少有进程间通信,MPI变成一种痛苦。 这是因为流程会花所有的时间将数据发送到对方(带宽成为一个限制因素)和你的CPU将保持空闲。 也许更大的问题是阅读完所有的数据。

这是一种具有类似的Hadoop背后的根本原因。 该数据也有分布 - Hadoop分布式文件系统!

如果说这一切总之,MPI是良好的任务并行和Hadoop是良好的数据并行。



Answer 3:

我能拿出最好的答案是,MPI比MapReduce的在两种情况下更好:

  1. 对于短期任务,而不是批量处理 。 例如,MapReduce的,不能用于个人响应查询 - 每个工作预计将需要几分钟。 我认为,在MPI,你可以建立一个查询响应系统中的机器发送消息给对方路由查询并生成答案。

  2. 对于作业的节点需要使通信开销使计算不切实际的沟通比迭代MapReduce工作的支持更多 ,但不太多。 我不知道发生的频率在实践中这种情况下,虽然。



Answer 4:

我想到的是MPI容易击败的MapReduce任务时遍历一个数据集的大小是与处理器高速缓存媲美,而当频繁需要与其他任务的通信。 科学域分解并行的方法很多适合这种模式。 如果MapReduce的要求顺序处理和通信,或过程的结局,然后从处理一个高速缓存尺寸问题的计算性能优势都将丢失。



Answer 5:

当计算和您正在使用有大部分转化为许多消息passings对象之间,或当你需要低级别的硬件访问级别如RDMA那么MPI是更好的不规则行为数据。 在一些答案,你在这里工作或内存一致性模型的等待时间被提到的看到,像Spark或演员车型,如AKKA框架已经证明,他们可以与MPI竞争。 最后一个要考虑的是MPI有被用于年用于科学计算图书馆发展的主要基地的好处(这是最重要的缺失部分使用DAG / MapReduce的模型的新框架缺失)。

总而言之,我认为的MapReduce / DAG模型就为大家带来如动态资源管理表中的好处,以及容错计算将让他们对科学计算组可行的。



文章来源: What are some scenarios for which MPI is a better fit than MapReduce?