MapReduce编程思想共分为8步:
map阶段:2步
shuffle阶段:4步
reduce阶段:2步
Map阶段
第一步: 设置inputFormat类,将数据切分为k-v对,输入到第二步;
第二步:自定义map逻辑,处理第一步中生成的k-v对,然后转换成新的的k-v进行输出;
Shuffle阶段
第三步:对输出的k-v进行分区,相同k的数据发往同一个reduce,相同k合并,v形成一个集合;
第四步:对不同分区的数据按照相同k进行排序;
第五步:对分区后的数据进行规约,降低数据的网络拷贝;
第六步:对排序后的数据进行分组,分组过程中,将相同k的v放到一个集合中。
Reduce阶段
第七步:对多个map任务进行合并,排序,写reduce函数逻辑,对输入的k-v进行处理,转换成新的k-v输出;
第八步:设置outputFormat类,将输出的k-v数据保存到文件中。