Hadoop 2.0近期的几项进展

jopen 10年前

本文分别从HDFS和YARN两方面介绍Hadoop 2.0的最新进展。

至今Hadoop 2.0的稳定版本2.2.0已经发布3个月左右,在这三个月中,HDFS和YARN/MRv2均有重大进展,本文简要对其进行介绍。注意,本文介绍的这些功能和特性,有的正在开发中,有的已经开发完毕,将出现在即将发布的Hadoop 2.3/2.4版本中。

1. HDFS进展

(1)对异构存储媒介的支持

之前HDFS假设底层存储媒介是同构的,性能完全一样,比如全是HDD(Hard Disk Drive),但随着新型媒介的出现以及对应成本的下降,很多公司开始尝试使用新的存储媒介,比如SSD。基于此,HDFS也紧跟时代发展潮流,将支持异 构存储媒介,即一个HDFS的各个存储节点上可以指定若干不同的存储媒介,比如HDD、SSD等,这样,用户可以根据应用特点将不同类型数据存储在不同媒 介上,以满足性能需求。

相关参考资料:

设计文档:Heterogeneous Storage for HDFS

Hadoop Jira链接: Enable support for heterogeneous storages in HDFS.

介绍性文档:Heterogeneous Storages in HDFS

(2)DataNode Cache

即DataNode缓存,目前HDFS中个DataNode上缓存的数据并没有通过适当的途径暴露给外界应用程序,这使得各个DataNode上的 内存无法得到充分的利用,尤其是Hive、Pig、 Impala等这样的计算框架无法利用DataNode的内存进行计算优化,比如Memory locality、读优化等。该从能将中心化管理DataNode缓存。

相关参考资料:

设计文档:Centralized cache management

Hadoop jira链接:Centralized cache management in HDFS

(3)HDFS ACL

ACL是Access Control Lists的简称,对HDFS而言,可认为一个文件/目录访问控制列表,这个列表记录了哪些用户对该目录 /文件有哪些权限。目前HDFS的权限控制是与Unix/linux一致的,包括用户、用户组、其他用户组三类权限,这种方式有很大局限性,比如有一份保 存在HDFS上的数据( sales­data),只有sales部门的leader Bob可以修改,该部门其他成员可以阅读,但其他部门人则不可以阅读和修改,为完成这个权限安排,可对该文件进行以下权限设置:

-rw-­r—–­­­­­  1 bob  sales    22K Nov 18 10:55 sales­data

随着部门架构的调整,希望另一个leader Mary也可以修改这份数据,该怎么办?如果希望另一个部门market的所有员工也可以阅读这份数据呢?仅通过现有的权限机制是不是很难表达出来。这主要是文件拥有者只能有一个,用户组也只能有一个等等造成的。

为了灵活解决以上问题,HDFS实现了ACL,了解MapReduce的用户应该对这个机制很清楚,因为MapReduce一直在用。在HDFS中,每个文件/目录可以对应一个ACL,描述哪些用户对他们有什么权限。

设计文档:HDFS ACLs Design

Hadoop jira链接:Implementation of ACLs in HDFS

(4)Rolling upgrade changes

目前HDFS已经完成了HA主备热切换和版本兼容(通过引入Protocol Buffers)的设计,但对不停机NameNode升级和热切换的支持仍待加强。

设计文档:HDFS Rolling Upgrades High Level Design

Hadoop jira链接:Umbrella jira for improved HDFS rolling upgrades

2. YARN/MRv2进展

(1)Application History Server

目前在YARN中,只有MapReduce应用程序拥有JobHistoryServer,借助它,用户可以直接在界面或者通过命令查看应用程序的 日志,但对于其他程序,比如Spark等,则没有这样的History Server,用户必须登录到对应节点上才能查看各个Container/Task的日志,非常不方便。Application History Server的出现将解决这一问题,有了它,任何应用程序的日志可以直接在WEB界面或者通过命令行查看。

设计文档:YARN–321 : The Generic Application History Service

Hadoop jira链接:Generic application history service

(2)对long-running application的支持

YARN在产生之初是源于MapReduce这类短应用程序,但随着YARN的发展,尤其是它逐步变为了一个通用的资源管理系统后,对长应用程序的 支持也迫在眉睫,长应用程序是指短时间内不会停止运行的任务,一般是一些服务,比如Http Server等,在即将发布的Hadoop 2.3/2.4版本中,也有对长应用程序轻量级的支持,但还不完善。

Hadoop jira链接:Roll up for long-lived services in YARN

(3)RM单点故障问题

在Hadoop 2.2.0中,ResourceManager存在单点故障,一旦ResourceManager挂了之后,整个集群不可用。为了解决这个问题,社区提出了以Zookeeper为核心的RM HA方案,沿用了HDFS HA的基本架构,我已经在 “Hadoop YARN单点故障解决方案(HA)介绍”、“Hadoop 2.0中单点故障解决方案总结”等文章中进行了介绍。

设计文档:YARN ResourceManager Automatic Failover

Hadoop jira链接:ResourceManager (RM) High-Availability (HA)

3. 总结

Hadoop 2.0发展非常迅猛,相比于1.0经历了7年左右才发布稳定版,Hadoop 2.0仅用了2年,这完全得力于众多的代码贡献者和良好的社区氛围,随着Hadoop的日趋完善和使用者增多,Hadoop在大数据和云计算时代,必将发挥越来越大的作用。

来自:董的博客