1.MapReduce编程思想和步骤

MapReduce编程思想

MapReduce分为Map和Reduce两个过程,其中Map负责分,Reduce负责合。shuffle阶段是对数据进行分区,排序,规约,分组等操作。

Map分为2个步骤,Shuffle分为4个步骤,Reduce分为2个步骤

MapReduce编程步骤

Map

  1. 读取文件,将文件解析成k,v键值对
  2. 自定义Map逻辑,接收k,v为新的k1,v1输出

Shuffle

  1. 分区,相同的key数据发送到同一个Reduce里面去,key合并,Reduce形成一个新的集合
  2. 排序,对v1进行排序,字典顺序排序
  3. 规约Combiner,可选
  4. 分组

Reduce

  1. 自定义Reduce逻辑接收k1,v1,转换为新的k2,v2
  2. 输出k2,v2进行保存

Map的两个阶段

  1. 设置input Format类,将数据切割分成key,value对,输入到第二步
  2. 自定义map逻辑,处理第一步中的数据,转换成新的key,value进行输出

Shuffle的四个步骤

  1. 对输出的key,value进行分区。
  2. 对不同分区的数据按照相同的key进行排序
  3. 对分组后的数据进行规约(combine),降低数据的传输
  4. 对排序后的数据进行分组,分组的过程中,将相同的key,value放到同一个分组中

reduce两个阶段

  1. 对map任务进行合并,排序,编写reduce逻辑,对key,value进行处理,转换为新的key,value对进行输出
  2. 设置outputformat将输出的key,value对数据进行保存

编程模型三部曲

  1. Input:一系列k1,v1对
  2. Map和Reduce:Map:(k1,v1)-->list(k2,v2),Reduce:(k2,list(v2))-->list(k3,v3)
  3. Output:(k3,v3)对
posted @ 2021-04-15 19:09  HandsomePlus  阅读(140)  评论(0)    收藏  举报