【Hadoop】新旧Java MapReduce API的差异
来源:互联网 发布:get it 编辑:程序博客网 时间:2024/05/17 02:19
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循环结构来迭代这些值。
----本文摘于《Hadoop权威指南第三版》,章节2.3.2.2
- 【Hadoop】新旧Java MapReduce API的差异
- Hadoop MapReduce新旧API区别
- Hadoop 新旧MapReduce API比较
- Java MapReduce新旧API的比较
- hadoop的新旧api
- Hadoop新旧API对比初探+链式mapreduce
- mapreduce 新旧API 区别
- MapReduce 新旧API
- mapreduce 新旧API 区别
- Hadoop新旧API的区别和联系
- Hadoop 新旧API对比
- Hadoop学习笔记二(新旧版本API的区别)
- 新旧 Hadoop MapReduce 框架比对
- 新旧 Hadoop MapReduce 框架比对
- [hadoop源码阅读][3]-新旧api区别
- Hadoop新旧API区别2<转>
- Hadoop实践(三)---新旧API对比
- Hadoop实战-初级部分 之 Hadoop MapReduce JAVA API
- VS 字符集设置
- HTML DOM 树
- 第七天-帮助和变量强制转换
- Codeforces Round #442 (Div. 2) B
- 【Leetcode】【python】Remove Duplicates from Sorted List/Remove Duplicates from Sorted List II
- 【Hadoop】新旧Java MapReduce API的差异
- codevs 1026 逃跑的拉尔夫(BFS)
- Codeforces Round #442 (Div. 2) C
- 一篇路上的总结
- 在PopupWindow中再弹出PopupWindow问题
- 004 矩阵理论的产生:背景、矩阵问题(矩阵逆阵理论、矩阵秩的理论);矩阵逆阵(定义、存在性、求法)
- day2
- Android设计模式之MVP
- Xcode9学习笔记18