目前從Hadoop官網的Wiki來看,穩定版本已經發行到Hadoop2.9.0,最新版本爲Hadoop3.1.0,查閱JIRA,社區已經着手迭代Hadoop3.2.0。那麼,今天筆者就帶着你們來剖析一下Hadoop3,看看它給咱們帶來了哪些新特性。後端
從功能上來講,Hadoop3比Hadoop2有些功能獲得了加強,具體增長了哪些,後面再講。首先,咱們來看看Hadoop3主要帶來了哪些變化:網絡
下面,筆者就爲你們來一一剖析這些新特性的具體內容,其內容包含JDK版本、EC技術、YARN的時間軸服務這三類特性,其餘特性筆者在後面的博客再爲你們慢慢剖析。架構
在Hadoop 3中,全部的Hadoop JAR包編譯的環境都是基於Java8來完成的,全部若是仍然使用的是Java 7或者更低的版本,你可能須要升級到Java 8才能正常的運行Hadoop3。以下圖所示:負載均衡
首先,咱們先來了解一下什麼是Erasure Encoding。以下圖所示:分佈式
通常來講,在存儲系統中,EC技術主要用於廉價磁盤冗餘陣列,即RAID。如上圖,RAID經過Stripping實現EC技術,其中邏輯順序數據(好比:文件)被劃分紅更小的單元(好比:位、字節或者是塊),並將連續單元存儲在不一樣的磁盤上。oop
而後,對原始數據單元的每一個Stripe,計算並存儲必定數量的奇偶校驗單位。這個過程稱之爲編碼,經過基於有效數據單元和奇偶校驗單元的解碼計算,能夠恢復任意Stripe單元的錯誤。當咱們想到了擦除編碼的時候,咱們能夠先來了解一下在Hadoop2中複製的早期場景。以下圖所示:學習
HDFS默認狀況下,它的備份係數是3,一個原始數據塊和其餘2個副本。其中2個副本所須要的存儲開銷各站100%,這樣使得200%的存儲開銷,會消耗其餘資源,好比網絡帶寬。然而,在正常操做中不多訪問具備低IO活動的冷數據集的副本,可是仍然消耗與原始數據集相同的資源量。測試
對於EC技術,即擦除編碼存儲數據和提供容錯空間較小的開銷相比,HDFS複製,EC技術能夠代替複製,這將提供相同的容錯機制,同時還減小了存儲開銷。以下圖所示:優化
EC和HDFS的整合能夠保持與提供存儲效率相同的容錯。例如,一個副本系數爲3,要複製文件的6個塊,須要消耗6*3=18個塊的磁盤空間。可是,使用EC技術(6個數據塊,3個奇偶校驗塊)來部署,它只須要消耗磁盤空間的9個塊(6個數據塊+3個奇偶校驗塊)。這些與原先的存儲空間相比較,節省了50%的存儲開銷。編碼
因爲擦除編碼須要在執行遠程讀取時,對數據重建帶來額外的開銷,所以他一般用於存儲不太頻繁訪問的數據。在部署EC以前,用戶應該考慮EC的全部開銷,好比存儲、網絡、CPU等。
Hadoop引入YARN Timeline Service v.2是爲了解決兩個主要問題:
下面首先,咱們來剖析一下它伸縮性。
YARN V1僅限於讀寫單個實例,不能很好的擴展到小集羣以外。YARN V2使用了更具備伸縮性的分佈式體系架構和可擴展的後端存儲,它將數據的寫入與數據的讀取進行了分離。並使用分佈式收集器,本質上是每一個YARN應用的收集器。讀則是獨立的實例,專門經過REST API服務來查詢
對於可用性的改進,在不少狀況下,用戶對流或者YARN應用的邏輯組的信息比較感興趣。啓動一組或者一系列的YARN應用程序來完成邏輯應用是很常見的。以下圖所示:
YARN時間線服務V2採用了一組收集器寫數據到後端進行存儲。收集器被分配並與它們專用的應用程序主機進行協做,以下圖所示,屬於該應用程序的全部數據都被髮送到應用程序時間軸的收集器中,可是資源管理器時間軸收集器除外。
對於給定的應用程序,應用程序能夠將數據寫入同一時間軸收集器中。此外,爲應用程序運行容器的其餘節點的節點管理器,還會向運行應用程序主節點的時間軸收集器寫入數據。資源管理器還維護本身的時間手機線收集器,它只發布YARN的通用生命週期事件,以保持其寫入量合理。時間的讀取器是單獨的守護進程從收集器中分離出來的,它旨在服務於REST API查詢操做。
本篇博客先給你們剖析前面幾個特性,其內容由JDK的版本升級、EC技術的做用及優點、YARN的時間軸V2版本的主要做用。Hadoop3後面的幾個特性,在下一篇博客爲你們再剖析。
這篇博客就和你們分享到這裏,若是你們在研究學習的過程中有什麼問題,能夠加羣進行討論或發送郵件給我,我會盡我所能爲您解答,與君共勉!