Hadoop的计算框架——shuffle流程理解要点

1. 分区partition

每个MapTask的输出都会被分割为多个分区,Reducer会根据JobTask维护的映射关系获取自己应该处理的那一份。

有多少个Reducer,Mapper的输出就应该有多少个分区。

这个分区动作叫做partition,具体逻辑是由partitioner类实现(用户可以自定义自己的partitioner),partition的职责就是保证MapTask输出的数据中具有同类Key的数据进入同一个Reducer进行处理。


3. 三次排序

Mapper输出阶段,缓冲区溢写时,溢写结果是分区内排序的。

Shuffle阶段,合并溢写文件时需要分区内排序(归并排序)。

Copy阶段(Reducer输入阶段),从各个Mapper收集过来的数据先入Reducer的缓冲区,溢写(merge)时整体排序(归并排序)。


你可能感兴趣的:(BigData)