1.MapReduce编程思想和步骤
MapReduce编程思想
MapReduce分为Map和Reduce两个过程,其中Map负责分,Reduce负责合。shuffle阶段是对数据进行分区,排序,规约,分组等操作。
Map分为2个步骤,Shuffle分为4个步骤,Reduce分为2个步骤
MapReduce编程步骤
Map
- 读取文件,将文件解析成k,v键值对
- 自定义Map逻辑,接收k,v为新的k1,v1输出
Shuffle
- 分区,相同的key数据发送到同一个Reduce里面去,key合并,Reduce形成一个新的集合
- 排序,对v1进行排序,字典顺序排序
- 规约Combiner,可选
- 分组
Reduce
- 自定义Reduce逻辑接收k1,v1,转换为新的k2,v2
- 输出k2,v2进行保存
Map的两个阶段
- 设置input Format类,将数据切割分成key,value对,输入到第二步
- 自定义map逻辑,处理第一步中的数据,转换成新的key,value进行输出
Shuffle的四个步骤
- 对输出的key,value进行分区。
- 对不同分区的数据按照相同的key进行排序
- 对分组后的数据进行规约(combine),降低数据的传输
- 对排序后的数据进行分组,分组的过程中,将相同的key,value放到同一个分组中
reduce两个阶段
- 对map任务进行合并,排序,编写reduce逻辑,对key,value进行处理,转换为新的key,value对进行输出
- 设置outputformat将输出的key,value对数据进行保存
编程模型三部曲
- Input:一系列k1,v1对
- Map和Reduce:Map:(k1,v1)-->list(k2,v2),Reduce:(k2,list(v2))-->list(k3,v3)
- Output:(k3,v3)对
学海无涯,回头是岸

浙公网安备 33010602011771号