- 分:
Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。
可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。
- 合:
Reduce负责“合”,即对map阶段的结果进行全局汇总。
MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。
-
Map: 对一组数据元素进行某种重复式的处理;
-
Reduce: 对Map的中间结果进行某种进一步的结果整理。
MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:
-
map: (k1; v1) → [(k2; v2)]
-
reduce: (k2; [v2]) → [(k3; v3)]
下面的图是从原料到汉堡包的过程,来体验分而治之的思想: