map reduce takeaways

来源:互联网 发布:cmc论坛源码 编辑:程序博客网 时间:2024/06/05 11:26

首先是数据的partition,  share nothing parallel architecture,  执行task的machine独立,各自处理自己的partition,不需要通信

暴露给用户的控制点只有2个 map function 和 reduce function,但是整个流程包含更多的步骤,(其他的步骤是infrastructure做的)

1)load/partition: 文件写到 hdfs 就完成了,hdfs会分chunck。

2)map:对chunk中的每条记录(key value pairs)执行map function 输出到本地磁盘。

3)combine: optional, 和reducer function 一样,一个chunk/partition中的 map 结果局部reduce。并不是所有的reduce都可以先局部reduce,(需要满足交换律和结合律),combine和reduce一样,是要先排序的。

4)shuffle:把mapper 输出的结果,按key hash到 reduce。reducer知道某个key是否属于自己,会到所有的mapper node的本地磁盘pull自己的key。

5)sort: 排序是为了聚合,把相同的key聚合到一起,便于iterate,这就是为什么reduce function是参数是( key,list of values)

6)reduce: 执行reduce function,输出到hdfs。


分布式系统就是一堆分布式的process,从这个view去看:

有一个master process 负责协调 - JobTracker

map task process:读chunk,parse record,call map function

reduce task process:shuffle(pull from map machine's local disk), sort, and call reducer function


0 0
原创粉丝点击