三个阶段 : 数据传输的过程中,都是以 key - value的键值对出现的。
map阶段
-
读取数据,将数据转换成 k1 和 v1
-
自定义 map逻辑, 将 k1 和 v1 转换成 k2 和 v2
shuffle阶段
-
分区: 将相同的k2的数据发送给同一个reduce程序
-
排序:根据k2的数据,进行排序操作(按照字典顺序)
-
规约combine:是局部聚合,是MapReduce的优化步骤
-
分组:将相同的k2的值进行合并成为一个集合
reduce阶段
-
自定义 reduce 任务的逻辑,将 shuffle 的 k2 和v2 进行转换操作得到 k3 和 v3
-
输出操作:将k3 和v3 输出到指定的文件目录