# 思维导图
# 介绍
- 抽象模型
- Map
- Reduce
- 大规模并行计算
# 实现
- 执行流程
- Master 数据结构
- Map 和 Reduce 任务的状态
- Worker 机器的标识
- Map 任务产生的 R 个中间文件存储区域的大小和位置
- 容错
- worker 故障
- Map 或 Reduce 任务由其他 Worker 重新执行
- master 失败
- 终止 MapReduce 任务
- 失效处理机制
- Map 和 Reduce 任务原子提交
- Map 和 Reduce 任务输出到临时文件
- Reduce 完成后将临时文件重命名为最终输出文件
- worker 故障
- 存储位置
- 尽可能从本地读取,减少网络带宽
- 任务粒度
- M 个数远大于 R 个数
- 备用任务
- 以防落伍者拖慢整体任务进度
# 技巧
- 分区函数
- Map 任务输出中间文件分区
- 顺序保证
- Reduce 任务读取数据前排序
- Combiner 函数
- Map 任务输出到临时文件之前合并
- 输入和输出的类型
- 副作用
- 不确定性任务
- 跳过损坏的记录
- 本地执行
- 状态信息
- 计数器