第 4 章 · 第三幕:汇流 章节摘要:汇流是三幕剧的高潮:Map 端已排序分区的输出,经 Shuffle 跨越网络流向各 Reduce 任务,归并成"按键分组"的流,交给归约函数,最终写出。本章先以六步分解透视 Shuffle 全过程,再依次拆解 Partition、Reduce 与 Output、以及作为结构基础的排序与分组比较器——二次排序等高级模式全部建立在这块地基上。 学习目标 阅读完本章,你应当能够: 按顺序复述 Shuffle 的六个步骤,并区分哪些发生在 Map 端、哪些在 Reduce 端; 手推一个键经过 HashPartitioner 后落在哪个 Reduce 任务; 解释排序为何是分组与 Join 的结构基础;
章节摘要:汇流是三幕剧的高潮:Map 端已排序分区的输出,经 Shuffle 跨越网络流向各 Reduce 任务,归并成"按键分组"的流,交给归约函数,最终写出。本章先以六步分解透视 Shuffle 全过程,再依次拆解 Partition、Reduce 与 Output、以及作为结构基础的排序与分组比较器——二次排序等高级模式全部建立在这块地基上。
阅读完本章,你应当能够:
前三拍在 Map 端完成,后三拍在 Reduce 端接力——"Shuffle"一词横跨两岸,指的是整段数据迁徙。
以透视视角逐步拆解环形缓冲、溢写、分段归并、拷贝、归并排序、分组六步,附每步的参数与调优点,是全书的枢纽一节。
分区函数决定每个键的去向;默认哈希取模的推导、倾斜的成因、自定义分区的三种典型写法(业务键打散、哈希加盐、总控均衡)。
Reduce 任务的启动时机与拷贝参数、归并的流数控制、reduce 函数的调用契约,以及 OutputFormat 与输出提交协议如何避免两次写出。
排序的三种层次(全排序、区内排序、二次排序)、复合键设计、SortComparator 与 GroupingComparator 的分工——理解了它们,Join 与 TopN 模式就是自然推论。
一句话论点:4.1 是全局时间线,4.2 回答"谁去哪儿",4.3 回答"到了以后怎么办",4.4 揭示"为什么要排好序才分组"。
Map 输出 已排序已分区 │ ▼ 4.1 六步时间线 总览 ├─► 4.2 分区 数据归属 ├─► 4.3 拷贝归并与写出 收尾 └─► 4.4 排序与分组 结构地基 │ ▼ 第 6 章 直接在此地基上解经典计算题