新增的java MapReduce API
Hadoop 是版本0.20.0 包含一个新的 Java MapReduce API ,新的API类型上不兼容先前的api ,所以需要重写以前的应用程序才能使用新的api 发挥作用。
新增的API和久的API之间有几个明显的区别:
1 新的API 倾向于使用虚类,而不是接口,因此更容易扩展。在新的API 中,mapper 和reduce 现在都是虚类。
2 新的API 放在 org.apache.hadoop.mapreduce 包中,久的API 放在 org.apache.hadoop.maperd 中
3 新的API 充分使用上下对象,使用户代码能与 MapReduce 系统通讯
如: MapContext 基本具备了 JobConf OutputCollcetor 和 Reporter 的功能
4 新的API同时支持 推push 和 拉 pull 迭代,两类的api都可以将键/值对记录推给mapper,但新的api也允许把记录从map()方法中拉取出来,对reduce() 也是一样
5 新的api实现了配置统一,旧的api是通过一个特殊的JobConf 对象配置作业,该对象是Hadoop 配置对象的一个扩展。新的api中,我们丢去这种区分,所有的作业都通过 Configuration 来完成的。
6 新的API中作业控制由 Job类实现,而非 JobClient 类, 新的删除了JobClient 类。
7 输出文件名方式不同,map 的输出文件是part-m-nnnnn 而 reduce 的输出为 part-r-nnnnn (其中nnnnn 表示分块序列,为整数,从0开始)