===== 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已经包涵该行了) {{:pasted:20151019-160401.png}}