1. 程式人生 > >Hadoop 3相對於hadoop 2的新特性

Hadoop 3相對於hadoop 2的新特性

ive 編碼 提升 gpu ase 大數據 持久 快速 變量

相對於之前主要生產發布版本Hadoop 2,Apache Hadoop 3整合許多重要的增強功能。 Hadoop 3是一個可用版本,提供了穩定性和高質量的API,可以用於實際的產品開發。下面簡要介紹一下Hadoop3的主要變化。

最低Java版本要求從Java7變為Java8

所有Hadoop的jar都是基於Java 8運行是版本進行編譯執行的,仍在使用Java 7或更低Java版本的用戶需要升級到Java 8。

HDFS支持糾刪碼(erasure coding)

糾刪碼是一種比副本存儲更節省存儲空間的數據持久化存儲方法。比如Reed-Solomon(10,4)標準編碼技術只需要1.4倍的空間開銷,而標準的HDFS副本技術則需要3倍的空間開銷。由於糾刪碼額外開銷主要在於重建和遠程讀寫,它通常用來存儲不經常使用的數據(冷數據)。另外,在使用這個新特性時,用戶還需要考慮網絡和CPU開銷。

YARN時間線服務 v.2(YARN Timeline Service v.2)

YARN Timeline Service v.2用來應對兩個主要挑戰:(1)提高時間線服務的可擴展性、可靠性,(2)通過引入流(flow)和聚合(aggregation)來增強可用性。為了替代Timeline Service v.1.x,YARN Timeline Service v.2 alpha 2被提出來,這樣用戶和開發者就可以進行測試,並提供反饋和建議,不過YARN Timeline Service v.2還只能用在測試容器中。

重寫Shell腳本

Hadoop的shell腳本被重寫,修補了許多長期存在的bug,並增加了一些新的特性。

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

在2.x版本中,hadoop-client Maven artifact配置將會拉取hadoop的傳遞依賴到hadoop應用程序的環境變量,這回帶來傳遞依賴的版本和應用程序的版本相沖突的問題。

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

支持Opportunistic Containers和Distributed Scheduling

ExecutionType概念被引入,這樣一來,應用能夠通過Opportunistic的一個執行類型來請求容器。即使在調度時,沒有可用的資源,這種類型的容器也會分發給NM中執行程序。在這種情況下,容器將被放入NM的隊列中,等待可用資源,以便執行。Opportunistic container優先級要比默認Guaranteedcontainer低,在需要的情況下,其資源會被搶占,以便Guaranteed container使用。這樣就需要提高集群的使用率。

Opportunistic container默認被中央RM分配,但是,目前已經增加分布式調度器的支持,該分布式調度器做為AMRProtocol解析器來實現。

MapReduce任務級本地優化

MapReduce添加了映射輸出收集器的本地化實現的支持。對於密集型的洗牌操作(shuffle-intensive)jobs,可以帶來30%的性能提升。

支持多余2個以上的NameNodes

針對HDFS NameNode的高可用性,最初實現方式是提供一個活躍的(active)NameNode和一個備用的(Standby)NameNode。通過對3個JournalNode的法定數量的復制編輯,使得這種架構能夠對系統中任何一個節點的故障進行容錯。

該功能能夠通過運行更多備用NameNode來提供更高的容錯性,滿足一些部署的需求。比如,通過配置3個NameNode和5個JournalNode,集群能夠實現兩個節點故障的容錯。

修改了多重服務的默認端口

在之前的Hadoop版本中,多重Hadoop服務的默認端口在Linux臨時端口範圍內容(32768-61000),這就意味著,在啟動過程中,一些服務器由於端口沖突會啟動失敗。這些沖突端口已經從臨時端口範圍移除,NameNode、Secondary NameNode、DataNode和KMS會受到影響。我們的文檔已經做了相應的修改,可以通過閱讀發布說明 HDFS-9427和HADOOP-12811詳細了解所有被修改的端口。

提供文件系統連接器(filesystem connnector),支持Microsoft Azure Data Lake和Aliyun對象存儲系統

Hadoop支持和Microsoft Azure Data Lake和Aliyun對象存儲系統集成,並將其作為Hadoop兼容的文件系統。

數據節點內置平衡器(Intra-datanode balancer)

在單一DataNode管理多個磁盤情況下,在執行普通的寫操作時,每個磁盤用量比較平均。但是,當添加或者更換磁盤時,將會導致一個DataNode磁盤用量的嚴重不均衡。由於目前HDFS均衡器關註點在於DataNode之間(inter-),而不是intra-,所以不能處理這種不均衡情況。

在hadoop3 中,通過DataNode內部均衡功能已經可以處理上述情況,可以通過hdfs diskbalancer ClI來調用。

重寫了守護進程和任務的堆管理機制

針對Hadoop守護進程和MapReduce任務的堆管理機制,Hadoop3 做了一系列的修改。

HADOOP-10950 引入配置守護進程堆大小的新方法。特別地,HADOOP_HEAPSIZE配置方式已經被棄用,可以根據主機的內存大小進行自動調整。

MAPREDUCE-5785 簡化了MAP的配置,減少了任務堆的大小,所以不需要再任務配置和Java可選項中明確指出需要的堆大小。已經明確指出堆大小的現有配置不會受到該改變的影響。

S3Gurad:為S3A文件系統客戶端提供一致性和元數據緩存

HADOOP-13345 為亞馬遜S3存儲的S3A客戶端提供了可選特性:能夠使用DynamoDB表作為文件和目錄元數據的快速、一致性存儲。

HDFS的基於路由器互聯(HDFS Router-Based Federation)

HDFS Router-Based Federation添加了一個RPC路由層,為多個HDFS命名空間提供了一個聯合視圖。這和現有的ViewFs、HDFS Federation功能類似,區別在於通過服務端管理表加載,而不是原來的客戶端管理。從而簡化了現存HDFS客戶端接入federated cluster的操作。

基於API配置的Capacity Scheduler queue configuration

OrgQueue擴展了capacity scheduler,提供了一種編程方法,該方法提供了一個REST API來修改配置,用戶可以通過遠程調用來修改隊列配置。這樣一來,隊列的administer_queue ACL的管理員就可以實現自動化的隊列配置管理。

YARN資源類型

Yarn資源模型已經被一般化,可以支持用戶自定義的可計算資源類型,而不僅僅是CPU和內存。比如,集群管理員可以定義像GPU數量,軟件序列號、本地連接的存儲的資源。然後,Yarn任務能夠在這些可用資源上進行調度。

想學習大數據或者對大數據技術感興趣的朋友,這裏我整理了一套大數據的學習視頻免費分享給大家,從入門到實戰都有,大家可以加我的微信:Lxiao_28獲取!(備註領取資料)。也歡迎進微信群交流,或者獲取Java高級技術學習資料。

Hadoop 3相對於hadoop 2的新特性