Hadoop MapReduce概念学习系列之新旧 MapReduce API 比较(四)

简介:

 从 0.20.0 版本开始,Hadoop 同时提供了新旧两套 MapReduce API。新 API 在旧 API 基础上进行了封装,使得其在扩展性和易用性方面更好。新旧版 MapReduce API 的主要区 别如下。

  (1)存放位置

   旧版 API 放在 org.apache.hadoop.mapred 包中,而新版 API 则放在 org.apache.hadoop. mapreduce 包及其子包中

  (2)接口变为抽象类

   接口通常作为一种严格的“协议约束”。它只有方法声明而没有方法实现,且要求所有实 现类(不包括抽象类)必须实现接口中的每一个方法。接口的最大优点是允许一个类实现多 个接口,进而实现类似 C++ 中的“多重继承”。抽象类则是一种较宽松的“约束协议”,它可 为某些方法提供默认实现。而继承类则可选择是否重新实现这些方法。正是因为这一点,抽 象类在类衍化方面更有优势,也就是说,抽象类具有良好的向后兼容性,当需要为抽象类添 加新的方法时,只要新添加的方法提供了默认实现,用户之前的代码就不必修改了。

  考虑到抽象类在API衍化方面的优势,新API在InputFormat、OutputFormat、Mapper、Reducer和Partitioner由接口变成抽象类

  (3)上下文封装

  新版 API 将变量和函数封装成各种上下文(Context)类,使得 API 具有更好的易用性 和扩展性。首先,函数参数列表经封装后变短,使得函数更容易使用 ;其次,当需要修改 或添加某些变量或函数时,只需修改封装后的上下文类即可,用户代码无须修改,这样保 证了向后兼容性,具有良好的扩展性。

                  

   上图展示了新版API中树形的Context 类继承关系。这些Context 各自封装了一种实体的基本信息及对应的操作(setter和getter 函数),如JobContext、TaskAttemptContext 分 别封装了Job和Task的基本信息,TaskInputOutputContext 封装了Task的各种输入输出操作,MapContext 和ReduceContext分别封装了Mapper和Reducer对外的公共接口。

  除了以上三点不同之外,新旧API 在很多其他细节方面也存在小的差别。由于新版和旧版API 在类层次结构、编程接口名称及对应的参数列表等方面存在较大差别,所以两种 API 不能兼容。但考虑到应用程序的向后兼容性,短时间内不会将旧API从MapReduce 中去掉。即使在完全采用新 API 的0.21.0/0.22.X 版本系列中,也仅仅将旧 API 标注为过期(deprecated),用户仍然可以使用。

 

 


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5058689.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
64
分享
相关文章
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
140 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
189 1
‌API开发的基础概念和作用‌
API(Application Programming Interface)是一组定义了软件组件之间交互规则的接口。它提供了一种标准化的方式,让不同的软件组件之间可以进行通信和交互。
124 2
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
110 5
API 管理的概念是什么?Apifox 为什么值得推荐?
在互联世界中,API如同软件间的“翻译官”,让应用能相互交流、共享数据。随着API数量激增,有效管理变得至关重要。API管理确保API的质量、安全与性能,提升开发效率及用户体验。它覆盖API从设计到废弃的全过程。利用如Apifox这样的工具,可以轻松实现API的设计、测试、文档管理和模拟等。Apifox集多种功能于一体,简化工作流程,提高团队协作效率。在选择API管理工具时,Apifox以全面的功能和友好的使用体验脱颖而出,成为开发者们的优选。随着技术发展,未来API管理将更加智能化和高效。
API 管理的概念是什么?Apifox 为什么值得推荐?
商品详情数据API接口概念(sku详情图属性等全面的解析)
商品详情数据API接口是指一种编程接口(API, Application Programming Interface),它允许开发者或系统以编程方式获取商品的详细信息,包括但不限于SKU(Stock Keeping Unit,库存量单位)的详细信息、商品图片、商品属性、价格、库存状态、用户评价等。这种接口通常由电商平台、商品数据库服务商或第三方数据提供商提供,旨在帮助开发者或企业快速集成商品数据到其应用程序或系统中。
一文讲清 API 接口的概念、设计和实现
总结 在这个例子中,我们创建了一个简单的Express服务器,并定义了一个/api/auth/login的POST接口来处理登录请求。我们使用body-parser中间件来解析请求体中的JSON数据,并在接口内部进行简单的用户名和密码验证。
学习gin-vue-admin之创建api和swagger
学习gin-vue-admin之创建api和swagger
【JAVA学习之路 | 提高篇】[内部类与常见API]String类
【JAVA学习之路 | 提高篇】[内部类与常见API]String类

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等