MapReduce执行流程(图解+注解)

MapReduce执行流程(图解+注解)_第1张图片

1.Map阶段:

1.对文件进行逻辑切片split,默认大小为hdfs块大小,每一块对应一个mapTask
2.对切片中的数据按行读取,解析返回形式,key为每一行的偏移量,value为每一行的数据;
3.调用map方法处理数据,读取一行调用一次;
4.对map方法计算的数据进行分区partition,排序sort;
默认不分区,因为只有一个reduceTask处理数据,分区数=reduceTask数,计算规则:key的hash值对reduce取模,保证相同key一定在同一分区
5.map输出数据一同写入到数据缓冲区,达到一定的条件溢写到磁盘
6.spill溢出的文件进行combiner规约,combiner为map阶段的reduce,并不是每个mapTask都有该流程,对于combine需要慎用,例如:求平均数,如果提前combine则会导致最终的计算结果不一致
7.对所有溢出的文件(分区且有序)进行最终merge合并,成为一个大文件

2.Reduce阶段:

1.从MapTask复制拉取其对应的分区文件
2.将copy的数据进行merge合并,再对合并后的数据排序,默认按照key字典序排序
3.对排序后的数据调用reduce方法

你可能感兴趣的:(大数据,hadoop,mapreduce,hdfs)