第 3 章 · 第二幕:映射 章节摘要:第二幕里,每个 Map 任务在自己的分片上独立工作:RecordReader 把字节流切成键值对,用户 map 函数逐条加工,输出写入环形缓冲区,满则溢写成排好序的分段文件。本章拆解这条执行流水线、支撑它的类型系统与序列化设计,以及挂在 Map 端出口处的 Combiner 本地预聚合机制。 学习目标 阅读完本章,你应当能够: 按顺序说出 Map 任务内部的五个执行环节及其衔接; 解释 InputFormat、RecordReader、OutputFormat 各自的职责边界; 说明 Writable 类型体系的存在理由与常用类型的选用; 判断一个计算能否安全使用 Combiner,并举出不能用的反例;
章节摘要:第二幕里,每个 Map 任务在自己的分片上独立工作:RecordReader 把字节流切成键值对,用户 map 函数逐条加工,输出写入环形缓冲区,满则溢写成排好序的分段文件。本章拆解这条执行流水线、支撑它的类型系统与序列化设计,以及挂在 Map 端出口处的 Combiner 本地预聚合机制。
阅读完本章,你应当能够:
第二幕的全部戏剧张力在缓冲区:一进一出之间,排序与分区已经悄悄发生。
从任务启动到输出就绪的完整流水线:InputFormat 家族、RecordReader 的切割规则、环形缓冲区的结构与溢写过程、分段归并。
四个类型参数的含义与流转、Writable 序列化体系的设计动机、Text 与 TextBytes 的区别、常见格式类与工具类的地图。
Combiner 在流水线上的位置、数学上的合法性条件(结合律与交换安全性)、WordCount 与求平均数一正一反两个案例、与 Reduce 函数的关系。
一句话论点:3.1 讲数据怎么流,3.2 讲流过的管道用什么规格,3.3 讲管道出口处能省多少路费。
分片就位 │ ▼ 3.1 执行流水线 ──► 3.2 类型与序列化规格 ──► 3.3 出口处的本地预聚合 数据流 类型契约 传输减量 │ ▼ 进入第 4 章 第三幕 汇流