MapReduce
一、作者想达成什么目标?
- 让没有并行和分布式经验的程序员也可以利用大型分布式系统的资源。
- 隐藏掉那些关于
并行化
、数据分发
、负载均衡
、容错(fault-tolerance)
的混乱而棘手的细节(messy details)。
二、作者发明了什么技术方法?
- 一种编程模型和它的实现。
- 用户只要写一个map函数,和一个reduce函数。
MapReduce的概要
输入被分成M个文件
Input1 -> Map -> a,1 b,1 c,1
Input2 -> Map -> b,1
Input3 -> Map -> a,1 c,1
| | |
| | -> Reduce -> c,2
| -----> Reduce -> b,2
---------> Reduce -> a,2
MR为每个文件调用一次Map(), 产生一系列 k2,v2,"中间"数据
对于每个键k2,MR收集它所有的值v2,并传递给一个Reduce调用
(注:同一个key都是分给同一个Reduce)
Reduce处理的结果是一组 <k2, v3>
总之:
[