在2014年4月7日,Apache发布了Hadoop 2.4.0 。相比于hadoop 2.3.0,这个版本有了一定的改进,突出的变化可以总结为下列几点(官方文档说明):
1 支持HDFS访问控制列表(ACL,Access Control Lists)
这个特性解决了在一定情况下,文件权限访问的权限问题。其机制是基于Linux文件访问权限的特征,如果你熟悉Linux的文件访问机制,你就不用再去理解HDFS文件访问的特性了。
有了ACL特性后,对HDFS文件系统就具有了良性的扩展特性。HDFS-4685 bug,已经在这个版本解决了。
2 本地支持HDFS滚动在线升级
解决问题(HDFS-5535):“In order to roll a new HDFS release through a large cluster quickly and safely, a few enhancements are needed in HDFS. An initial High level design document will be attached to this jira, and sub-jiras will itemize the individual tasks.”。
3 为HDFS的FSImage提供协议缓存(protocol-buffers)
这个功能使得HDFS升级服务更流畅。解决问题(HDFS-5698):"Branch for using protobuf serialization for FSImage"
4 支持HDFS的https访问方式
5 支持YARN ResourceManager容错
仅支持ResourceManager因故障挂掉重启,可以恢复之前正在运行的应用程序(用户不需重新提交),但正在运行的和尚未运行的任务需重新运行。另外,该版本不支持ResourceManager主备切换,甚至不能配置备ResourceManager。因此,该功能并没有彻底完成。如果想使用的话,请关注其实现进度。
6 增强了对新应用上YARN的功能
Application Timeline Server之前运行在YARN上的计算框架中,只有MapReduce配有Job History server,该server可以供用户查询已经运行完成的作业的信息,随着YARN上计算框架的增多,有必要增加一个通用的Job History Server,于是开发了Generic history server,后来改名为Application Timeline Server,相关文档说明见:Application Timeline Server。注:Application Timeline Server可认为YARN提供给应用程序的用于共享信息的共享存储模块,可以将metric等信息存到该模块中,不仅仅是历史作业运行信息。目前共享存储模块使用的是单机版的leveldb,用户可根据需要扩展成hbase等。
7 支持YARN上CapacityScheduler 的SLAs
Capacity scheduler支持资源抢占该功能很早就有了,但一直没有得到充分的测试。该版本进行了充分测试,并验证了其有效性。这里简单解释一下capacity scheduler资源抢占功能的设计动机:在capacity scheduler中,队列间的剩余资源是共享的,即当一个队列的资源有剩余时,可以共享给其它队列,但当该队列有新的作业提交时,其它队列必须在一定时间内归还(释放)资源,如果没有归还,则进行调度器会进行抢占。