我在半年前发表的博文“Apache Hadoop 2.0.3-alpha发布了”,介绍了Hadoop 2.0新增的特性。(http://dongxicheng.org/mapreduce-nextgen/apache-hadoop-2-0-3-published/

今天,Apache Hadoop 2.1.0-beta即将发布了,在Hadoop SVN(http://svn.apache.org/repos/asf/hadoop/common/branches/)上已经出现了该版本的分支,且今生几个未解决的bug尚未修复。2.1.0-beta一旦发布,稳定版的发布则为时不晚了。

本文将介绍2.1.0-beta版本引入的新特性,总结起来,主要有以下几个特性:

  • 通信协议规范化

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

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

  1. Client与RM之间:ClientRMProtocol
  2. RM与管理员之间:RMAdminProtocol
  3. AM与RM之间:AMRMProtocol
  4. AM与NM之间:ContainerManager
  5. RM与NM之间:ResourceTracker

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

  1. ClientRMProtocol –> ApplicationClientProtocol
  2. RMAdminProtocol –> ResourceManagerAdministrationProtocol
  3. AMRMProtocol –> ApplicationMasterProtocol
  4. ContainerManager –> ContainerManagementProtocol

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

         相关jira链接:

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

  • 编程接口稳定。

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

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

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

  1. AMRMClient:AM与RM交互的编程库
  2. NMClient:AM与NM交互的编程库
  3. YarnClient:Client与RM交互的编程库,

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

相关jira链接:

  1. https://issues.apache.org/jira/browse/YARN-422
  2. https://issues.apache.org/jira/browse/YARN-103
  3. https://issues.apache.org/jira/browse/YARN-29
  • 资源调度器完善。

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

相关jira链接:

  1. https://issues.apache.org/jira/browse/YARN-45
  2. https://issues.apache.org/jira/browse/YARN-187(让FS支持层级队列组织方式)
  3. https://issues.apache.org/jira/browse/MAPREDUCE-824(让CS支持层级队列组织方式)
  4. https://issues.apache.org/jira/browse/YARN-569(让CS支持抢占)
  5. https://issues.apache.org/jira/browse/YARN-326 (让FS支持多类别资源调度)
  6. https://issues.apache.org/jira/browse/YARN-2 (让CS支持多类别资源调度)
  7. https://issues.apache.org/jira/browse/YARN-3

目前beta版本尚未解决的问题主要有两个:

  • ResourceManager HA

MRv1的JobTracker HA问题很长时间没有解决,但最近的CDH版本已经给出了解决方法,具体可参考我的这篇文章“CDH中JobTracker HA解决方案”(http://dongxicheng.org/mapreduce/cdh4-jobtracker-ha/),后来CDH将相关的HA基础库共享给了Apache,目前beta版的基本库中已经内嵌了HA基础库,目前正在实现一个基于zookeeper的RMStateStore,基于该实现,ResourceManager的HA方案将为其不远。

相关jira链接:

  1. https://issues.apache.org/jira/browse/YARN-149
  2. https://issues.apache.org/jira/browse/YARN-128
  3. https://issues.apache.org/jira/browse/YARN-353
  • 通用JobHistoryServer实现

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

相关jira链接:https://issues.apache.org/jira/browse/YARN-321

总结

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

原创文章,转载请注明: 转载自董的博客

本文链接地址: Apache Hadoop 2.1.0-beta将要发布

微信公众号:hadoop-123,专注于大数据技术分享,欢迎加入!

说点什么

avatar
  Subscribe  
提醒