MapReduce处理流程二
1、另一个流程图
注意点:1.1、可以自定义 分区函数 控制分区行为
1.2、缓冲区默认排序算法为 快速排序
2、为什么要进行分区?
为了实现并行处理。为了使后面多个 reduce能同时处理数据。
这里分区的目的其实和inputformat 切分数据的 目的是相同的。
inputformat 切分为 多个 input split ,每个map处理一个 input split 。
分区则是使 每个 map的输出 ,逻辑上分成了多个片,每个片发送到 不同的 reduce进行处理。
这里我们要想到 Hadoop 是分布式系统,是并行执行的 。
3、
3.1 注意有一个 copy的过程--- 我总感觉 这个copy 就像洗牌后的发牌
3.2 reducer 处理前 先进行了 merge--合并。
3.3 一个reducer 处理一个对应的分区 ---- 这样多个 reducer 并行处理 加快了处理速度
4、 一个实例程序的执行流程
4.1 shuffle 洗牌 --- 现实中我们洗牌是为了打乱顺序 ,这里的洗牌却是洗出了顺序。