Hadoop3.x中增強(qiáng)了很多特性,在Hadoop3.x中,不再允許使?jdk1.7,要求必須是jdk1.8以上版本。這是因?yàn)镠adoop 2.0是基于JDK 1.7開發(fā)的,而JDK 1.7在2015年4月已停止更新,這直接迫使Hadoop社區(qū)基于JDK 1.8重新發(fā)布一個(gè)新的Hadoop版本,即Hadoop3.x。Hadoop3.x以后將會(huì)調(diào)整方案架構(gòu),將MapReduce基于內(nèi)存+io+磁盤共同處理數(shù)據(jù)。
Hadoop 3.x中引入了一些重要的功能和優(yōu)化,包括HDFS可擦除編碼、多Namenode支持、MR Native Task優(yōu)化、 YARN基于cgroup的內(nèi)存和磁盤IO隔離、 YARN container resizing等。 Hadoop3.x官方文檔地址為http://hadoop.apache.org/docs/r3.0.1/ 。
下面,從Common、HDFS、YARN、MapReduce等方面的改進(jìn),來談一下Hadoop 3.x新特性。
1. Hadoop3.x新特性之Common改進(jìn)
精簡(jiǎn)Hadoop內(nèi)核,包括剔除過期的API和實(shí)現(xiàn),將默認(rèn)組件實(shí)現(xiàn)替換成最?高效的實(shí)現(xiàn)(比如將FileOutputCommitter缺省實(shí)現(xiàn)換為v2版本,廢除hftp,轉(zhuǎn)由webhdfs替代,移除Hadoop子實(shí)現(xiàn)序列化庫(kù)org.apache.hadoop.Records。
lasspath isolation以防止不同版本jar包沖突,比如google Guava在混合使用Hadoop、 HBase和Spark時(shí),很容易產(chǎn)生沖突。
Shell腳本重構(gòu)。 Hadoop 3.0對(duì)Hadoop的管理腳本進(jìn)行了重構(gòu),修復(fù)了大量bug,增加了新特性,支持動(dòng)態(tài)命令等。使用方式上則和之前版本的一致。
2. Hadoop3.x新特性之HDFS改進(jìn)
Hadoop3.x中最大改變的是HDFS, HDFS通過最近black塊計(jì)算,根據(jù)最近計(jì)算原則,本地black塊先加入到內(nèi)存,然后計(jì)算,再通過IO共享內(nèi)存計(jì)算區(qū)域,最后快速形成計(jì)算結(jié)果。
HDFS支持?jǐn)?shù)據(jù)的擦除編碼,這使得HDFS在不降低可靠性的前提下,節(jié)省一半存儲(chǔ)空間。
多NameNode支持,即支持一個(gè)集群中,一個(gè)active、多個(gè)standby namenode部署方式。(注:多ResourceManager特性在hadoop 2.0中已經(jīng)支持)。
3. Hadoop3.x新特性之YARN改進(jìn)
基于cgroup的內(nèi)存隔離和IO Disk隔離。
用curator實(shí)現(xiàn)RM leader選舉。
containerresizing。
Timelineserver next generation。
4. Hadoop3.x新特性之MapReduce改進(jìn)
Tasknative優(yōu)化。為MapReduce增加了C/C++的map output collector實(shí)現(xiàn)(包括Spill, Sort和IFile等),通過作業(yè)級(jí)別參數(shù)調(diào)整就可切換到該實(shí)現(xiàn)上。對(duì)于shuffle密集型應(yīng)用,其性能可提高約30%。
MapReduce內(nèi)存參數(shù)自動(dòng)推斷。在Hadoop 2.0中,為MapReduce作業(yè)設(shè)置內(nèi)存參數(shù)非常繁瑣,涉及到兩個(gè)參數(shù):mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦設(shè)置不合理,則會(huì)使得內(nèi)存資源浪費(fèi)嚴(yán)重,比如將前者設(shè)置為4096MB,但后者卻是“-Xmx2g”,則剩余2g實(shí)際上?無(wú)法讓java heap使?用到。
5. Hadoop3.x新特性之其他改進(jìn)
添加新的 hadoop-client-api 和 hadoop-client-runtime 組件到一個(gè)單獨(dú)的jar包,以此解決依賴不兼容的問題。
支持微軟的Azure分布式文件系統(tǒng)和阿里的aliyun分布式文件系統(tǒng) 。