【问题标题】:Difference between Fork/Join and Map/ReduceFork/Join 和 Map/Reduce 的区别
【发布时间】:2011-02-02 01:15:50
【问题描述】:

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

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

【问题讨论】:

    标签: mapreduce fork-join


    【解决方案1】:

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

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

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

    【讨论】:

    • 更具体地说,F-J 允许工作人员从彼此的队列中窃取子任务。如果工作线程在不同的机器上(因此没有共享内存),这是不可能的。
    • 根据MapReduce Wikipedia entry 的说法,M-R 不一定限于单层分叉任务。
    • 在 Java 上下文之外的 fork/join 和 mapreduce 有什么区别?
    【解决方案2】:

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

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

    他们发现基本上 Java fork/join 具有较低的启动延迟,并且可以很好地适应小输入 (100MB)。

    但如果你愿意的话,这里还有很多内容可以阅读。

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多