Fork / Join和Map / Reduce之间的区别

时间:2010-03-29 13:34:47

标签: mapreduce fork-join

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

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

2 个答案:

答案 0 :(得分:35)

一个关键的区别是F-J似乎被设计为在单个Java VM上工作,而M-R明确地设计为在大型机器集群上工作。这些情况非常不同。

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

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

答案 1 :(得分:12)

关于这个问题有一篇完整的科学论文,Comparing Fork/Join and MapReduce

本文比较了三种并行范例的性能,可伸缩性和可编程性:fork / join,MapReduce和混合方法。

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

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