用户工具


hadoop编程模型

本文主要关注InputFormat,Marpper,Combine,Partitioner,Reducer,OutputFormat几个阶段。

旧版的api为这几个阶段分别设计了接口,新版的api把接口改写成了抽象类(如果要添加新的函数,直接在抽象类中添加就好了,如果是接口的话,需要修改更上层的代码)

Map task阶段

  • InputFormat
  • Maper
  • Combine(本地reduce,减少网络传输)
  • Partitioner(按reduce个数进行分区)

Reduce task阶段

  • 数据远程拷贝
  • shuffle & sort
  • Reducer
  • OutputFormat
  • split切分的大小默认等于block大小(如果一个文件小于block size,也会切分成一个map),如果截止的字节在行内,那会继续把行读完,这也就意味着一个split可能大于block size。下一个split遇到截断行时,自动跳过改行(因为上一个split已经包涵该行了)