1

刚刚阅读完以下有关MapReduce的论文。一个问题——reduce 是等到所有的 map 操作完成,还是在某些结果可用时才开始?

4

2 回答 2

1

Haskell 内置了 map 和 reduce(他们称之为 fold),并且它的执行顺序是未定义的(你甚至可以对无限列表进行操作,只要你不尝试评估整个事情)。所以你可以做任何一种方式。

如果您问 Google 是如何做到的,我不确定,但他们可能会设置它,以便 reduce 尽可能地消耗他们正在映射的列表,因为这样他们就不必将已处理的值保存在内存中。

于 2012-11-14T05:56:21.447 回答
1

在 MapReduce 作业中,在所有 Map 作业完成之前,reducers 不会开始执行 reduce 方法。当映射器可用时,Reducers 开始从映射器复制中间键值对。这就是为什么我们能够在 Job-tracker 中看到,当某些映射仍在运行时,reduce 显示很少。

于 2012-11-14T10:23:45.610 回答