相對于之前主要生產(chǎn)發(fā)布版本Hadoop 2,Apache Hadoop 3整合許多重要的增強(qiáng)功能。 Hadoop 3是一個(gè)可用版本,提供了穩(wěn)定性和高質(zhì)量的API,可以用于實(shí)際的產(chǎn)品開發(fā)。下面簡要介紹一下Hadoop3的主要變化。
最低Java版本要求從Java7變?yōu)镴ava8
所有Hadoop的jar都是基于Java 8運(yùn)行是版本進(jìn)行編譯執(zhí)行的,仍在使用Java 7或更低Java版本的用戶需要升級到Java 8。
HDFS支持糾刪碼(erasure coding)
糾刪碼是一種比副本存儲(chǔ)更節(jié)省存儲(chǔ)空間的數(shù)據(jù)持久化存儲(chǔ)方法。比如Reed-Solomon(10,4)標(biāo)準(zhǔn)編碼技術(shù)只需要1.4倍的空間開銷,而標(biāo)準(zhǔn)的HDFS副本技術(shù)則需要3倍的空間開銷。由于糾刪碼額外開銷主要在于重建和遠(yuǎn)程讀寫,它通常用來存儲(chǔ)不經(jīng)常使用的數(shù)據(jù)(冷數(shù)據(jù))。另外,在使用這個(gè)新特性時(shí),用戶還需要考慮網(wǎng)絡(luò)和CPU開銷。
YARN時(shí)間線服務(wù) v.2(YARN Timeline Service v.2)
YARN Timeline Service v.2用來應(yīng)對兩個(gè)主要挑戰(zhàn):(1)提高時(shí)間線服務(wù)的可擴(kuò)展性、可靠性,(2)通過引入流(flow)和聚合(aggregation)來增強(qiáng)可用性。為了替代Timeline Service v.1.x,YARN Timeline Service v.2 alpha 2被提出來,這樣用戶和開發(fā)者就可以進(jìn)行測試,并提供反饋和建議,不過YARN Timeline Service v.2還只能用在測試容器中。
重寫Shell腳本
Hadoop的shell腳本被重寫,修補(bǔ)了許多長期存在的bug,并增加了一些新的特性。
覆蓋客戶端的jar(Shaded client jars)
在2.x版本中,hadoop-client Maven artifact配置將會(huì)拉取hadoop的傳遞依賴到hadoop應(yīng)用程序的環(huán)境變量,會(huì)帶來傳遞依賴的版本和應(yīng)用程序的版本相沖突的問題。
HADOOP-11804 添加新 hadoop-client-api和hadoop-client-runtime artifcat,將hadoop的依賴隔離在一個(gè)單一Jar包中,也就避免hadoop依賴滲透到應(yīng)用程序的類路徑中。
支持Opportunistic Containers和Distributed Scheduling
ExecutionType概念被引入,這樣一來,應(yīng)用能夠通過Opportunistic的一個(gè)執(zhí)行類型來請求容器。即使在調(diào)度時(shí),沒有可用的資源,這種類型的容器也會(huì)分發(fā)給NodeManager中執(zhí)行程序。在這種情況下,容器將被放入NodeManager的隊(duì)列中,等待可用資源,以便執(zhí)行。Opportunistic container優(yōu)先級要比默認(rèn)Guaranteed container低,在需要的情況下,其資源會(huì)被搶占,以便Guaranteed container使用。這樣就需要提高集群的使用率。
Opportunistic container默認(rèn)被中央RM分配,但是,目前已經(jīng)增加分布式調(diào)度器的支持,該分布式調(diào)度器做為AMR Protocol解析器來實(shí)現(xiàn)。
MapReduce任務(wù)級本地優(yōu)化
MapReduce添加了映射輸出收集器的本地化實(shí)現(xiàn)的支持。對于密集型的洗牌操作(shuffle-intensive)jobs,可以帶來30%的性能提升。
支持多余2個(gè)以上的NameNodes
針對HDFS NameNode的高可用性,最初實(shí)現(xiàn)方式是提供一個(gè)活躍的(active)NameNode和一個(gè)備用的(Standby)NameNode。通過對3個(gè)JournalNode的法定數(shù)量的復(fù)制編輯,使得這種架構(gòu)能夠?qū)ο到y(tǒng)中任何一個(gè)節(jié)點(diǎn)的故障進(jìn)行容錯(cuò)。
該功能能夠通過運(yùn)行更多備用NameNode來提供更高的容錯(cuò)性,滿足一些部署的需求。比如,通過配置3個(gè)NameNode和5個(gè)JournalNode,集群能夠?qū)崿F(xiàn)兩個(gè)節(jié)點(diǎn)故障的容錯(cuò)。
修改了多重服務(wù)的默認(rèn)端口
在之前的Hadoop版本中,多重Hadoop服務(wù)的默認(rèn)端口在Linux臨時(shí)端口范圍內(nèi)容(32768-61000),這就意味著,在啟動(dòng)過程中,一些服務(wù)器由于端口沖突會(huì)啟動(dòng)失敗。這些沖突端口已經(jīng)從臨時(shí)端口范圍移除,NameNode、Secondary NameNode、DataNode和KMS會(huì)受到影響。我們的文檔已經(jīng)做了相應(yīng)的修改,可以通過閱讀發(fā)布說明 HDFS-9427和HADOOP-12811詳細(xì)了解所有被修改的端口。
提供文件系統(tǒng)連接器(filesystem connnector),支持Microsoft Azure Data Lake和Aliyun對象存儲(chǔ)系統(tǒng)
Hadoop支持和Microsoft Azure Data Lake和Aliyun對象存儲(chǔ)系統(tǒng)集成,并將其作為Hadoop兼容的文件系統(tǒng)。
數(shù)據(jù)節(jié)點(diǎn)內(nèi)置平衡器(Intra-datanode balancer)
在單一DataNode管理多個(gè)磁盤情況下,在執(zhí)行普通的寫操作時(shí),每個(gè)磁盤用量比較平均。但是,當(dāng)添加或者更換磁盤時(shí),將會(huì)導(dǎo)致一個(gè)DataNode磁盤用量的嚴(yán)重不均衡。由于目前HDFS均衡器關(guān)注點(diǎn)在于DataNode之間(inter-),而不是intra-,所以不能處理這種不均衡情況。
在hadoop3 中,通過DataNode內(nèi)部均衡功能已經(jīng)可以處理上述情況,可以通過hdfs diskbalancer ClI來調(diào)用。
重寫了守護(hù)進(jìn)程和任務(wù)的堆管理機(jī)制
針對Hadoop守護(hù)進(jìn)程和MapReduce任務(wù)的堆管理機(jī)制,Hadoop3 做了一系列的修改。
HADOOP-10950 引入配置守護(hù)進(jìn)程堆大小的新方法。特別地,HADOOP_HEAPSIZE配置方式已經(jīng)被棄用,可以根據(jù)主機(jī)的內(nèi)存大小進(jìn)行自動(dòng)調(diào)整。
MAPREDUCE-5785 簡化了MAP的配置,減少了任務(wù)堆的大小,所以不需要再任務(wù)配置和Java可選項(xiàng)中明確指出需要的堆大小。已經(jīng)明確指出堆大小的現(xiàn)有配置不會(huì)受到該改變的影響。
S3Gurad:為S3A文件系統(tǒng)客戶端提供一致性和元數(shù)據(jù)緩存
HADOOP-13345 為亞馬遜S3存儲(chǔ)的S3A客戶端提供了可選特性:能夠使用DynamoDB表作為文件和目錄元數(shù)據(jù)的快速、一致性存儲(chǔ)。
HDFS的基于路由器互聯(lián)(HDFS Router-Based Federation)
HDFS Router-Based Federation添加了一個(gè)RPC路由層,為多個(gè)HDFS命名空間提供了一個(gè)聯(lián)合視圖。這和現(xiàn)有的ViewFs、HDFS Federation功能類似,區(qū)別在于通過服務(wù)端管理表加載,而不是原來的客戶端管理。從而簡化了現(xiàn)存HDFS客戶端接入federated cluster的操作。
基于API配置的Capacity Scheduler queue configuration
OrgQueue擴(kuò)展了capacity scheduler,提供了一種編程方法,該方法提供了一個(gè)REST API來修改配置,用戶可以通過遠(yuǎn)程調(diào)用來修改隊(duì)列配置。這樣一來,隊(duì)列的administer_queue ACL的管理員就可以實(shí)現(xiàn)自動(dòng)化的隊(duì)列配置管理。
YARN資源類型
Yarn資源模型已經(jīng)被一般化,可以支持用戶自定義的可計(jì)算資源類型,而不僅僅是CPU和內(nèi)存。比如,集群管理員可以定義像GPU數(shù)量,軟件序列號、本地連接的存儲(chǔ)的資源。然后,Yarn任務(wù)能夠在這些可用資源上進(jìn)行調(diào)度。








暫無數(shù)據(jù)