# 思维导图

# 介绍

  • 抽象模型
    • Map
    • Reduce
  • 大规模并行计算

# 实现

  • 执行流程
  • Master 数据结构
    • Map 和 Reduce 任务的状态
    • Worker 机器的标识
    • Map 任务产生的 R 个中间文件存储区域的大小和位置
  • 容错
    • worker 故障
      • Map 或 Reduce 任务由其他 Worker 重新执行
    • master 失败
      • 终止 MapReduce 任务
    • 失效处理机制
      • Map 和 Reduce 任务原子提交
      • Map 和 Reduce 任务输出到临时文件
      • Reduce 完成后将临时文件重命名为最终输出文件
  • 存储位置
    • 尽可能从本地读取,减少网络带宽
  • 任务粒度
    • M 个数远大于 R 个数
  • 备用任务
    • 以防落伍者拖慢整体任务进度

# 技巧

  • 分区函数
    • Map 任务输出中间文件分区
  • 顺序保证
    • Reduce 任务读取数据前排序
  • Combiner 函数
    • Map 任务输出到临时文件之前合并
  • 输入和输出的类型
  • 副作用
    • 不确定性任务
  • 跳过损坏的记录
  • 本地执行
  • 状态信息
  • 计数器