51

Fork/Join 和 Map/Reduce 之间的主要区别是什么?

它们的分解和分布类型(数据与计算)是否不同?

4

2 回答 2

44

一个关键区别是FJ似乎被设计为在单个 Java VM 上工作,而MR被明确设计为在大型机器集群上工作。这些是非常不同的场景。

FJ 提供了以递归方式将任务划分为多个子任务的功能;更多的层,在这个阶段“跨叉”通信的可能性,更传统的编程。不延伸(至少在论文中)超出单台机器。非常适合利用您的八核。

MR 只进行一次大拆分,映射的拆分彼此之间根本不交谈,然后将所有内容缩减在一起。单层,在减少之前没有拆分间通信,并且可大规模扩展。非常适合利用您的云份额。

于 2010-03-29T14:28:18.340 回答
17

有一篇关于该主题的完整科学论文,比较 Fork/Join 和 MapReduce

该论文比较了三种并行范例的性能、可扩展性和可编程性:fork/join、MapReduce 和混合方法。

他们发现基本上 Java fork/join 具有较低的启动延迟,并且可以很好地适应小输入(<5MB),但由于共享内存、单节点架构的大小限制,它无法处理更大的输入。另一方面,MapReduce 具有显着的启动延迟(数十秒),但可以很好地扩展计算集群上更大的输入(>100MB)。

但是如果你愿意的话,那里还有很多东西要读。

于 2013-09-09T20:22:15.553 回答