Google MapReduce论文:
http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/no//archive/mapreduce-osdi04.pdf
1. 介绍
MapReduce是用来处理和生成大数据量的一种编程模型。用户指定map函数处理key/value的输入,产生临时性的key/value值,
然后和通过reduce函数来合并临时性的key/value值。采用这种编程模式可以自动的并行执行在大规模的集群上,可以不用关心
并行和分布式的细节。
2. 编程模型
这种计算模型将输入的key/value,产生一组key/value输出。MapReduce库提供了两个函数Map和Reduce。
Map: 通过输入的key/value值,产生一组临时的key/value输出。MapReduce库组合临时的相同键值,将其传入Reduce函数。
Reduce: 接受临时的key I 和一组对应的value, 合并这个key中的所有value。
3. 函数执行流程
4. 容错机制
work failure
master会周期性的ping worker机器,如果一定的的时间内没有回复就将其标志为failure,并且重新分配一个新的worker。
master failure
可以周期性的将master的数据文件写入checkpoint,当master失败的时候,一份新的拷贝可以迅速的从checkpoint恢复。
5. 任务分配
我们将map阶段分为M小片,将reduce阶段分为R小片。通常情况下M和R比worker机器的数量大的多。因为master要生成
O(M+R)的任务,在内存中保持O(M*R)的状态。实际上,M的选择要保证每个任务片的数据量大小在16MB和64MB之间。
在GOOGLE的环境中,MapReduce的计算采用M=200,000和R=5000 采用2000台worker机器。M:R:W = 100 :2.5 : 1
6. 状态信息
master节点运行在一个http服务器上,状态信息会显示当前计算的进度,例如多少个任务在执行,多少已经完成。还可以
显示每个任务输出的文件等信息。