這篇博客就和你們分享到這裏,若是你們在研究學習的過程中有什麼問題,能夠加羣進行討論或發送郵件給我,我會盡我所能爲您解答,與君共勉!
接着上一篇博客的內容,繼續介紹Hadoop3的其餘新特性。其內容包含:優化Hadoop Shell腳本、重構Hadoop Client Jar包、支持等待Container、MapReduce任務級別本地優化、支持多個NameNode、部分默認服務端口被改變、支持文件系統鏈接器、DataNode內部添加負載均衡、重構後臺程序和任務堆管理。負載均衡
Hadoop Shell腳本已經被重寫,用來修復已知的BUG,解決兼容性問題和一些現有安裝的更改。它還包含了一些新的特性,內容以下所示:分佈式
Hadoop2 中可用的Hadoop客戶端將Hadoop的傳遞依賴性拉到Hadoop應用程序的類路徑上。若是這些傳遞依賴項的版本與應用程序使用的版本發送衝突,這可能會產生問題。oop
所以,在Hadoop3中有新的Hadoop客戶端API和Hadoop客戶端運行時工件,它們將Hadoop的依賴性遮蔽到單個JAR中,Hadoop客戶端API是編譯範圍,Hadoop客戶端運行時是運行時範圍,它包含從Hadoop客戶端從新定位的第三方依賴關係。所以,你能夠將依賴項綁定到JAR中,並測試整個JAR以解決版本衝突。這樣避免了將Hadoop的依賴性泄露到應用程序的類路徑上。例如,HBase能夠用來與Hadoop集羣進行數據交互,而不須要看到任何實現依賴。post
在Hadoop3 中引入了一種新型執行類型,即等待容器,即便在調度時集羣沒有可用的資源,它也能夠在NodeManager中被調度執行。在這種狀況下,這些容器將在NM中排隊等待資源啓動,等待榮容器比默認容器優先級低,所以,若是須要,能夠搶佔默認容器的空間,這樣能夠提供機器的利用率。以下圖所示:性能
默認容器對於現有的YARN容器,它們由容量調度分配,一旦被調度到節點,就保證有可用的資源使它們執行當即開始。此外,只要沒有故障發生,這些容器就能夠容許完畢。學習
等待容器默認由中心RM分配,但還增長了支持以容許等待容器被分佈式調度,該調度羣被實現於AM和RM協議的攔截器。測試
在Hadoop3中,本地的Java實現已加入MapReduce地圖輸出器,對於Shuffle密集的做業,這樣能夠提升30%或者更高的性能。優化
它們添加了映射輸出收集器的本機實現,讓MapTask基於JNI來本機優化。基本思想是添加一個NativeMapOutputCollector收集器來處理映射器發出的鍵值對,所以Sort、Spill、文件序列化均可以在本機代碼中完成。阿里雲
在Hadoop2中,HDFS NameNode高可用體系結構有一個Active和Standby NameNode,經過JournalNodes,該體系結構可以容忍任何一個NameNode失敗。3d
然而,業務關鍵部署須要更高程度的容錯性。所以,在Hadoop3中容許用戶運行多個備用的NameNode。例如,經過配置三個NameNode(1個Active NameNode和2個Standby NameNode)和5個JournalNodes節點,集羣能夠容忍2個NameNode節點故障。以下圖所示:
早些時候,多個Hadoop服務的默認端口位於Linux端口範圍之內。除非客戶端程序明確的請求特定的端口號,不然使用的端口號是臨時的,所以,在啓動時,服務有時會由於與其餘另外一個應用程序衝突而沒法綁定到端口。
所以,具備臨時範圍衝突端口已經被移除該範圍,影響多個服務的端口號,即NameNode、Secondary NameNode、DataNode等以下所示:
Daemon | App | Hadoop2 Port | Hadoop3 Port |
NameNode Port | Hadoop HDFS NameNode | 8020 | 9820 |
Hadoop HDFS NameNode HTTP UI | 50070 | 9870 | |
Hadoop HDFS NameNode HTTPS UI | 50470 | 9871 | |
Secondary NameNode Port | Secondary NameNode HTTP | 50091 | 9869 |
Secondary NameNode HTTP UI | 50090 | 9868 | |
DataNode Port | Hadoop HDFS DataNode IPC | 50020 | 9867 |
Hadoop HDFS DataNode | 50010 | 9866 | |
Hadoop HDFS DataNode HTTP UI | 50075 | 9864 | |
Hadoop HDFS DataNode HTTPS UI | 50475 | 9865 |
Hadoop如今支持與微軟 Azure數據和阿里雲對象存儲系統的集成。它能夠做爲一種替代Hadoop兼容的文件系統,首先添加微軟Azure數據,而後添加阿里雲對象存儲系統。
單個數據節點配置多個數據磁盤,在正常寫入操做期間,數據被均勻的劃分,所以,磁盤被均勻填充。可是,在維護磁盤時,添加或者替換磁盤會致使DataNode節點存儲出現偏移,這種狀況在早期的HDFS文件系統中,是沒有被處理的。如圖下圖所示,維護前和維護後不均衡的狀況:
如今Hadoop3經過新的內部DataNode平衡功能來處理這種狀況,這是經過hdfs diskbalancer CLI來進行調用的。執行以後,DataNode會進行均衡處理,以下圖所示:
Hadoop守護進程和MapReduce任務的堆管理已經發生了一系列的變化。
Hadoop3的這些新特性仍是很吸引人的,目前官方推出的穩定版本是2.9.0,發行版是3.1.0,感興趣的同窗能夠下載Hadoop3去體驗調研學習一下這些新特性。
這篇博客就和你們分享到這裏,若是你們在研究學習的過程中有什麼問題,能夠加羣進行討論或發送郵件給我,我會盡我所能爲您解答,與君共勉!