“先 Map 再 Reduce”——这个简单的编程模型是分布式计算的经典范式。通过 WordCount 入门 MapReduce。

一、分治思想

  • 1.1 单机处理大文件的困境
  • 1.2 Map——分而治之,并行处理
  • 1.3 Reduce——汇总合并
  • 1.4 为什么叫 MapReduce——函数式编程渊源

二、WordCount 完整流程

  • 2.1 输入——一行一行读
  • 2.2 Map 阶段——切词 + 计数
  • 2.3 Shuffle 阶段——按 Key 分组
  • 2.4 Reduce 阶段——累加求和
  • 2.5 完整的数据流图示

三、MapReduce 编程要素

  • 3.1 Mapper 类——map() 方法
  • 3.2 Reducer 类——reduce() 方法
  • 3.3 Driver——配置 Job
  • 3.4 输入格式——TextInputFormat
  • 3.5 输出格式——TextOutputFormat

四、Shuffle 详解

  • 4.1 Partition——决定数据去哪个 Reducer
  • 4.2 Sort——按 Key 排序
  • 4.3 Combiner——局部 Reduce 优化
  • 4.4 Shuffle 是性能瓶颈