首家大数据培训挂牌机构 股票代码:837906 | EN CN

Apache Hadoop 2.1.0-beta已经发布

于2017-03-29由小牛君创建

分享到:



我在半年前发表的博文“Apache Hadoop 2.0.3-alpha发布了”,介绍了Hadoop 2.0新增的特性。

半年之后,Apache Hadoop 2.1.0-beta已经发布(消息来源:http://t.cn/zjhr8bl)了,代码见Hadoop SVNhttp://svn.apache.org/repos/asf/hadoop/common/branches/)。2.1.0-beta的发布预示着稳定版的发布为时不晚了。

本文将介绍2.1.0-beta版本引入的新特性。总结起来,相比于alpha版本,beta版主要增加了以下几个新特性(主要是YARN的改变,HDFS变动较小):

(1)通信协议命名规范化

由于alpha版本中的通信协议命名不规范,在beta版本中对所有协议进行了重命名,主要如下:

在alpha版本中,不同服务间的协议名称如下:

Client与RM之间:ClientRMProtocol

RM与管理员之间:RMAdminProtocol

AM与RM之间:AMRMProtocol

AM与NM之间:ContainerManager

RM与NM之间:ResourceTracker

在beta版中,协议重命名如下:

ClientRMProtocol –> ApplicationClientProtocol

RMAdminProtocol –> ResourceManagerAdministrationProtocol

AMRMProtocol –> ApplicationMasterProtocol

ContainerManager –> ContainerManagementProtocol

ResourceTracker协议名称未变,这个本来要改为ResourceTrackerProtocol的,不知最后为啥没修改。

相关jira链接:

https://issues.apache.org/jira/browse/YARN-387

(2)编程接口变得稳定

我们知道,如果将一个应用程序运行在YARN上,需要设计一个client和一个applicationMaster,这需要用到ApplicationClientProtocol、ApplicationMasterProtocol和ContainerManagementProtocol三个RPC协议,在alpha版本中,这些协议中的RPC函数定义并不稳定,而beta版则对其进行了重构和修改,变得稳定,以后除非大版本升级,否则不再修改,这意味着beta版发布后,用户可以在YARN上编写应用程序了。

此外,为了用户编写应用程序方便,yarn提供了三个编程库,用户无需直接使用上述三个RPC协议,而只需使用这三个编程库即可,分别如下:

在包org.apache.hadoop.yarn.client.api中,

AMRMClient:AM与RM交互的编程库

NMClient:AM与NM交互的编程库

YarnClient:Client与RM交互的编程库

截至目前,YARN中自带的ApplicationMaster实现,包括两个example(distributedshell和unmanaged AM)和MRAppMaster(MapReduce ApplicationMaster)均已使用这几个编程库进行了重构。

相关jira链接:

https://issues.apache.org/jira/browse/YARN-418

https://issues.apache.org/jira/browse/YARN-422

https://issues.apache.org/jira/browse/YARN-103

https://issues.apache.org/jira/browse/YARN-29

(3)  资源调度器更加完善

Beta版对Fair Scheduler和Capacity Scheduler两种调度器(“Hadoop 2.0中Fair Scheduler与Capacity Scheduler对比”)的功能进行了完善,包括支持层级队列组织方式、支持资源抢占和支持多类别资源调度等,具体我已经在文章“Hadoop 新特性、改进、优化和Bug分析系列4:YARN-326, YARN-2”“Hadoop 新特性、改进、优化和Bug分析系列5:YARN-3”“Hadoop 新特性、改进、优化和Bug分析系列2:YARN-45”中三篇博文中进行了介绍。

相关jira链接:

https://issues.apache.org/jira/browse/YARN-45

https://issues.apache.org/jira/browse/YARN-187(让FS支持层级队列组织方式)

https://issues.apache.org/jira/browse/MAPREDUCE-824(让CS支持层级队列组织方式)

https://issues.apache.org/jira/browse/YARN-569(让CS支持抢占)

https://issues.apache.org/jira/browse/YARN-326 (让FS支持多类别资源调度)

https://issues.apache.org/jira/browse/YARN-2 (让CS支持多类别资源调度)

https://issues.apache.org/jira/browse/YARN-3

目前beta版本尚未解决的大问题主要有两个,分别如下:

(1)ResourceManager HA

MRv1的JobTracker HA问题很长时间没有解决,但最近的CDH版本已经给出了解决方法,具体可参考我的这篇文章“CDH中JobTracker HA解决方案”,后来CDH将相关的HA基础库贡献给了Apache,目前beta版的基本库中已经内嵌了HA基础库,目前正在实现一个基于zookeeper的RMStateStore,基于该实现,ResourceManager的HA方案将为其不远(实际上,YARN-149已经给出了详细设计文档)。

相关jira链接:

https://issues.apache.org/jira/browse/YARN-149

https://issues.apache.org/jira/browse/YARN-128

https://issues.apache.org/jira/browse/YARN-353

(2)通用JobHistoryServer实现

历史应用程序服务器是一个非常有用的组件,它能独立运行在一台机器上,供用户查询历史应用程序的所有信息。目前只有MapReduce On YARN有自己的jobHistoryServer实现,而没有一套通用的历史应用程序服务器。YARN正在实现该组件。

相关jira链接:

https://issues.apache.org/jira/browse/YARN-321

【总结】

beta版本的发布意味着稳定版指日可待,届时很多公司将向下一代Hadoop迁移。下一代Hadoop带来了巨大的好处,包括多样化的框架支持(MR、Tez、Spark、Storm等)、统一的框架管理、更高的资源利用率等