Fork/Join和Map/Reduce之间的主要区别是什么?
它们的分解和分布类型(数据与计算)有何不同?
一个关键的区别是FJ似乎被设计为在单个Java VM上工作,而MR明确地设计为在大型机器集群上工作.这些是非常不同的场景.
FJ提供了以递归方式将任务划分为多个子任务的工具; 更多层次,现阶段"跨叉"通信的可能性,更传统的编程.不延伸(至少在论文中)超出单个机器.非常适合利用您的八核.
MR只进行了一次大的拆分,映射的拆分根本没有在彼此之间进行通信,然后将所有内容减少在一起.单层,在减少之前没有交叉间通信,并且可以大规模扩展.非常适合利用您的云份额.
关于这个主题有一篇完整的科学论文,比较Fork/Join和MapReduce.
本文比较了三种并行范例的性能,可伸缩性和可编程性:fork/join,MapReduce和混合方法.
什么,他们发现基本上是爪哇叉/加入具有低启动延迟和良好的小型输入(<5MB)秤,但它不能处理由于共享存储器,单个节点架构的大小的限制较大的输入.在另一方面,具有的MapReduce显著启动延迟(几十秒),但很好地进行扩展为计算群集上大得多的输入(> 100MB).
但是,如果你想要它,还有很多东西可以在那里阅读.