频道栏目
首页 > 资讯 > 云计算 > 正文

Java Hadoop API的新旧的差异

17-10-25        来源:[db:作者]  
收藏   我要投稿

Hadoop在0.20.0版本中第一次使用新的API,部分早期的0.20.0版本不支持使用旧的API,但在接下来的1.x和2.x版本中新旧API都可以使用。

新旧API的差异主要有以下几点:

1. 新API倾向于使用虚类,而不是接口,因为更有利于扩展。在旧的API中使用Mapper和Reducer接口,而在新的API中使用虚类。

2. 新的API放在org.apache.hadoop.mapreduce包(和子包)中,旧的API放在org.apache.hadoop.mapred中。

3. 新API充分使用上下文对象,使用户代码能与MapReduce系统通信。例如,新的Context基本统一了旧API的JobConf、OutputCollector和Reporter的功能。

4. 键/值对记录在这两类API中都被推给mapper和reducer,但除此之外,新的API通过重写run()方法允许mapper和reducer控制执行流程。

5. 新的API中作业控制由Job类实现,而非旧API中的JobClient类,新的API中删除了JobClient类。

6. 新增的API实现了配置的统一。旧API通过一个特殊的JobConf对象配置作业,该对象是Hadoop配置对象的一个扩展。在新的API中,作业的配置由Configuration来完成。

7. 输出文件的命名方式稍有不同。在旧的API中map和reduce的输出被统一命名为part-nnmm,但在新的API中map的输出文件名为part-m-nnnnnn,而reduce的输出文件名为part-r-nnnnn(其中nnnnn是从0开始的表示分块序号的整数)。

8. 新API中的用户重载函数被声明为抛出异常java.lang.InterruptedException。这意味着可以用代码来实现中断响应。

9.在新的API中,reduce()传递的值是java.lang.Iterable类型的,而非旧API中传递的java.lang.Iterator类型。这一改变使我们更容易通过java的for-each循环结构来迭代这些值。

相关TAG标签
上一篇:Linux系统下压缩zip、解压缩unzip的命令详解及实例
下一篇:Role-based Authorization Strategy权限控制插件使用
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站