map/reduce引擎可以迭代地调用reduce函数; 因此,这些功能必须是幂等的.
这就是我总是理解减少在一般地图缩减环境中工作的方式.在这里,您可以通过减少每台机器上的值,然后将这些输出发送到另一台减速机来对N台机器的值求和.
框架为排序顺序中的每个唯一键调用应用程序的Reduce函数一次.Reduce可以迭代与该键关联的值并生成零个或多个输出.
在这里,您需要将所有值(使用相同的键)移动到要求求的同一台机器上.将数据移动到函数似乎与map reduce应该做的相反.
维基百科的描述是否过于具体?或者MongoDB是否打破了map-reduce?(或者我在这里错过了一些?)
Google是这样描述原始 MapReduce 框架的:
\n\n\n2 编程模型
\n[...]
\n中间值通过迭代器提供给 user\xe2\x80\x99s 的归约函数。这使我们能够处理太大而无法容纳在内存中的值列表。
\n
然后:
\n\n\n3 实施
\n[...]
\n\n
6.
Reduce Worker 迭代排序后的中间数据,对于遇到的每个唯一中间键,它将键和相应的中间值集传递给 user\xe2\x80\x99s Reduce 函数。
所以只有一次调用Reduce
。通过使用特殊的组合器解决了移动大量小型中间对的问题:
\n\n4.3 合路器功能
\n在某些情况下,每个映射任务生成的中间键存在大量重复[...]我们允许用户指定一个可选
\nCombiner
函数,该函数在通过网络发送数据之前对该数据进行部分合并。该
\nCombiner
函数在每台执行map任务的机器上执行。通常,相同的代码用于实现组合器和化简函数。[...]部分组合显着加速了某些类别的 MapReduce 操作。
\n
维基百科遵循原始的 MapReduce 设计,MongoDB 设计者采取了略有不同的方法。
\n 归档时间: |
|
查看次数: |
438 次 |
最近记录: |