第 2 章 · 第一幕:切分 章节摘要:三幕剧的第一幕在任何计算发生之前就已完成——框架把输入数据规划成若干逻辑分片,每个分片对应一个 Map 任务。本章讲透三件事:分片的机制与大小取舍、数据本地性如何让计算流向数据、压缩如何在存储与 Shuffle 两个环节同时发挥作用。读完你会明白:Map 任务数不是拍脑袋定的,而是被切分策略直接决定的。 学习目标 阅读完本章,你应当能够: 说清"块"与"分片"的区别——一个是物理存储单位,一个是逻辑计算单位; 手算一个给定文件大小与分片尺寸的作业会产生多少 Map 任务; 解释分片默认等于块大小的原因,以及何时应该改小或改大; 描述数据本地性的三个级别与框架的调度取舍; 为中间数据与最终输出选择合适的压缩编码并说明理由。
章节摘要:三幕剧的第一幕在任何计算发生之前就已完成——框架把输入数据规划成若干逻辑分片,每个分片对应一个 Map 任务。本章讲透三件事:分片的机制与大小取舍、数据本地性如何让计算流向数据、压缩如何在存储与 Shuffle 两个环节同时发挥作用。读完你会明白:Map 任务数不是拍脑袋定的,而是被切分策略直接决定的。
阅读完本章,你应当能够:
第一幕的三个决定,分别对应并行度、调度与 IO 成本,全部发生在用户函数执行之前。
分片与块的关系、分片大小的计算公式、Map 任务数的推导、小文件问题的成因与 CombineFileInputFormat 等对策。
"移动计算比移动数据便宜"的量化含义,节点本地、机架本地、跨机架三级本地性,以及调度器如何在等待与迁移之间权衡。
压缩在 MapReduce 全链路出现的位置:输入侧、中间侧、输出侧;常用编码的压缩比与速度对比,以及可分割压缩与否对分片的影响。
一句话论点:切多大决定演员数量,在哪跑决定旅途成本,压不压缩决定行李重量——三个决策共同压低第一幕的总开销。
输入数据 块布局 │ ▼ 2.1 切多大 ──► 2.2 在哪跑 ──► 2.3 压不压缩 并行度 调度成本 IO 成本 └──────────┴──────────┘ ▼ 带着角色表进入第 3 章 第二幕 映射