Hadoop 3相對(duì)于hadoop 2的新特性

相對(duì)于之前主要生產(chǎn)發(fā)布版本Hadoop 2,Apache Hadoop 3整合許多重要的增強(qiáng)功能。 Hadoop 3是一個(gè)可用版本,提供了穩(wěn)定性和高質(zhì)量的API,可以用于實(shí)際的產(chǎn)品開(kāi)發(fā)。下面簡(jiǎn)要介紹一下Hadoop3的主要變化。

最低Java版本要求從Java7變?yōu)镴ava8

所有Hadoop的jar都是基于Java 8運(yùn)行是版本進(jìn)行編譯執(zhí)行的,仍在使用Java 7或更低Java版本的用戶(hù)需要升級(jí)到Java 8。

HDFS支持糾刪碼(erasure coding)

糾刪碼是一種比副本存儲(chǔ)更節(jié)省存儲(chǔ)空間的數(shù)據(jù)持久化存儲(chǔ)方法。比如Reed-Solomon(10,4)標(biāo)準(zhǔn)編碼技術(shù)只需要1.4倍的空間開(kāi)銷(xiāo),而標(biāo)準(zhǔn)的HDFS副本技術(shù)則需要3倍的空間開(kāi)銷(xiāo)。由于糾刪碼額外開(kāi)銷(xiāo)主要在于重建和遠(yuǎn)程讀寫(xiě),它通常用來(lái)存儲(chǔ)不經(jīng)常使用的數(shù)據(jù)(冷數(shù)據(jù))。另外,在使用這個(gè)新特性時(shí),用戶(hù)還需要考慮網(wǎng)絡(luò)和CPU開(kāi)銷(xiāo)。

YARN時(shí)間線(xiàn)服務(wù) v.2(YARN Timeline Service v.2)

YARN Timeline Service v.2用來(lái)應(yīng)對(duì)兩個(gè)主要挑戰(zhàn):(1)提高時(shí)間線(xiàn)服務(wù)的可擴(kuò)展性、可靠性,(2)通過(guò)引入流(flow)和聚合(aggregation)來(lái)增強(qiáng)可用性。為了替代Timeline Service v.1.x,YARN Timeline Service v.2 alpha 2被提出來(lái),這樣用戶(hù)和開(kāi)發(fā)者就可以進(jìn)行測(cè)試,并提供反饋和建議,不過(guò)YARN Timeline Service v.2還只能用在測(cè)試容器中。

重寫(xiě)Shell腳本

Hadoop的shell腳本被重寫(xiě),修補(bǔ)了許多長(zhǎng)期存在的bug,并增加了一些新的特性。

覆蓋客戶(hù)端的jar(Shaded client jars)

在2.x版本中,hadoop-client Maven artifact配置將會(huì)拉取hadoop的傳遞依賴(lài)到hadoop應(yīng)用程序的環(huán)境變量,這回帶來(lái)傳遞依賴(lài)的版本和應(yīng)用程序的版本相沖突的問(wèn)題。

HADOOP-11804 添加新 hadoop-client-api和hadoop-client-runtime artifcat,將hadoop的依賴(lài)隔離在一個(gè)單一Jar包中,也就避免hadoop依賴(lài)滲透到應(yīng)用程序的類(lèi)路徑中。

支持Opportunistic Containers和Distributed Scheduling

ExecutionType概念被引入,這樣一來(lái),應(yīng)用能夠通過(guò)Opportunistic的一個(gè)執(zhí)行類(lèi)型來(lái)請(qǐng)求容器。即使在調(diào)度時(shí),沒(méi)有可用的資源,這種類(lèi)型的容器也會(huì)分發(fā)給NM中執(zhí)行程序。在這種情況下,容器將被放入NM的隊(duì)列中,等待可用資源,以便執(zhí)行。Opportunistic container優(yōu)先級(jí)要比默認(rèn)Guaranteedcontainer低,在需要的情況下,其資源會(huì)被搶占,以便Guaranteed container使用。這樣就需要提高集群的使用率。

Opportunistic container默認(rèn)被中央RM分配,但是,目前已經(jīng)增加分布式調(diào)度器的支持,該分布式調(diào)度器做為AMRProtocol解析器來(lái)實(shí)現(xiàn)。

MapReduce任務(wù)級(jí)本地優(yōu)化

MapReduce添加了映射輸出收集器的本地化實(shí)現(xiàn)的支持。對(duì)于密集型的洗牌操作(shuffle-intensive)jobs,可以帶來(lái)30%的性能提升。

支持多余2個(gè)以上的NameNodes

針對(duì)HDFS NameNode的高可用性,最初實(shí)現(xiàn)方式是提供一個(gè)活躍的(active)NameNode和一個(gè)備用的(Standby)NameNode。通過(guò)對(duì)3個(gè)JournalNode的法定數(shù)量的復(fù)制編輯,使得這種架構(gòu)能夠?qū)ο到y(tǒng)中任何一個(gè)節(jié)點(diǎn)的故障進(jìn)行容錯(cuò)。

該功能能夠通過(guò)運(yùn)行更多備用NameNode來(lái)提供更高的容錯(cuò)性,滿(mǎn)足一些部署的需求。比如,通過(guò)配置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)過(guò)程中,一些服務(wù)器由于端口沖突會(huì)啟動(dòng)失敗。這些沖突端口已經(jīng)從臨時(shí)端口范圍移除,NameNode、Secondary NameNode、DataNode和KMS會(huì)受到影響。我們的文檔已經(jīng)做了相應(yīng)的修改,可以通過(guò)閱讀發(fā)布說(shuō)明 HDFS-9427和HADOOP-12811詳細(xì)了解所有被修改的端口。

提供文件系統(tǒng)連接器(filesystem connnector),支持Microsoft Azure Data Lake和Aliyun對(duì)象存儲(chǔ)系統(tǒng)

Hadoop支持和Microsoft Azure Data Lake和Aliyun對(duì)象存儲(chǔ)系統(tǒng)集成,并將其作為Hadoop兼容的文件系統(tǒng)。

數(shù)據(jù)節(jié)點(diǎn)內(nèi)置平衡器(Intra-datanode balancer)

在單一DataNode管理多個(gè)磁盤(pán)情況下,在執(zhí)行普通的寫(xiě)操作時(shí),每個(gè)磁盤(pán)用量比較平均。但是,當(dāng)添加或者更換磁盤(pán)時(shí),將會(huì)導(dǎo)致一個(gè)DataNode磁盤(pán)用量的嚴(yán)重不均衡。由于目前HDFS均衡器關(guān)注點(diǎn)在于DataNode之間(inter-),而不是intra-,所以不能處理這種不均衡情況。

在hadoop3 中,通過(guò)DataNode內(nèi)部均衡功能已經(jīng)可以處理上述情況,可以通過(guò)hdfs diskbalancer ClI來(lái)調(diào)用。

重寫(xiě)了守護(hù)進(jìn)程和任務(wù)的堆管理機(jī)制

針對(duì)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 簡(jiǎn)化了MAP的配置,減少了任務(wù)堆的大小,所以不需要再任務(wù)配置和Java可選項(xiàng)中明確指出需要的堆大小。已經(jīng)明確指出堆大小的現(xiàn)有配置不會(huì)受到該改變的影響。

S3Gurad:為S3A文件系統(tǒng)客戶(hù)端提供一致性和元數(shù)據(jù)緩存

HADOOP-13345 為亞馬遜S3存儲(chǔ)的S3A客戶(hù)端提供了可選特性:能夠使用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功能類(lèi)似,區(qū)別在于通過(guò)服務(wù)端管理表加載,而不是原來(lái)的客戶(hù)端管理。從而簡(jiǎn)化了現(xiàn)存HDFS客戶(hù)端接入federated cluster的操作。

基于API配置的Capacity Scheduler queue configuration

OrgQueue擴(kuò)展了capacity scheduler,提供了一種編程方法,該方法提供了一個(gè)REST API來(lái)修改配置,用戶(hù)可以通過(guò)遠(yuǎn)程調(diào)用來(lái)修改隊(duì)列配置。這樣一來(lái),隊(duì)列的administer_queue ACL的管理員就可以實(shí)現(xiàn)自動(dòng)化的隊(duì)列配置管理。

YARN資源類(lèi)型

Yarn資源模型已經(jīng)被一般化,可以支持用戶(hù)自定義的可計(jì)算資源類(lèi)型,而不僅僅是CPU和內(nèi)存。比如,集群管理員可以定義像GPU數(shù)量,軟件序列號(hào)、本地連接的存儲(chǔ)的資源。然后,Yarn任務(wù)能夠在這些可用資源上進(jìn)行調(diào)度。

想學(xué)習(xí)大數(shù)據(jù)或者對(duì)大數(shù)據(jù)技術(shù)感興趣的朋友,這里我整理了一套大數(shù)據(jù)的學(xué)習(xí)視頻免費(fèi)分享給大家,從入門(mén)到實(shí)戰(zhàn)都有,大家可以加我的微信:Lxiao_28獲取?。▊渥㈩I(lǐng)取資料)。也歡迎進(jìn)微信群交流,或者獲取Java高級(jí)技術(shù)學(xué)習(xí)資料。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 終極算法 關(guān)注微信號(hào)每天收聽(tīng)我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 131,153評(píng)論 12 168
  • Zookeeper用于集群主備切換。 YARN讓集群具備更好的擴(kuò)展性。 Spark沒(méi)有存儲(chǔ)能力。 Spark的Ma...
    Yobhel閱讀 7,610評(píng)論 0 34
  • 首先,我們?cè)谑褂们跋瓤纯碒DFS是什麼?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得。 HDFS采用mast...
    W_Bousquet閱讀 4,472評(píng)論 0 2
  • 2018年春節(jié),每天都很忙。 寒假伊始便大掃除,每天洗一洗,洗到大年三十還在洗。大年三十,老妹跟我視頻聊天幾次,我...
    玲玲A閱讀 248評(píng)論 0 0
  • 今天終于鼓起勇氣,來(lái)談?wù)劇陡∈康隆贰?這本巨著,是歌德的畢生心血,從二十五歲開(kāi)始寫(xiě)到八十余歲,濃縮了一個(gè)詩(shī)人、哲學(xué)...
    原來(lái)是二姐閱讀 340評(píng)論 0 0

友情鏈接更多精彩內(nèi)容