Hadoop 3.x 新特性剖析系列1

哥不是小蘿莉發表於2018-04-14

1.概述

  目前從Hadoop官網的Wiki來看,穩定版本已經發行到Hadoop2.9.0,最新版本為Hadoop3.1.0,查閱JIRA,社群已經著手迭代Hadoop3.2.0。那麼,今天筆者就帶著大家來剖析一下Hadoop3,看看它給我們帶來了哪些新特性。

2. 內容

  從功能上來說,Hadoop3比Hadoop2有些功能得到了增強,具體增加了哪些,後面再講。首先,我們來看看Hadoop3主要帶來了哪些變化:

  • JDK:在Hadoop2時,可以使用JDK7,但是在Hadoop3中,最低版本要求是JDK8,所以低於JDK8的版本需要對JDK進行升級,方可安裝使用Hadoop3
  • EC技術:Erasure Encoding 簡稱EC,是Hadoop3給HDFS擴充的一種新特性,用來解決儲存空間檔案。EC技術既可以防止資料丟失,又能解決HDFS儲存空間翻倍的問題
  • YARN:提供YARN的時間軸服務V.2,以便使用者和開發人員可以對其進行測試,並提供反饋意見,使其成為YARN Timeline Service v.1的替代品。
  • 優化Hadoop Shell指令碼
  • 重構Hadoop Client Jar包
  • 支援隨機Container
  • MapReduce任務級本地優化
  • 支援多個NameNode
  • 部分預設服務埠被改變
  • 支援檔案系統聯結器
  • DataNode內部新增了負載均衡
  • 重構後臺程式和任務對管理

下面,筆者就為大家來一一剖析這些新特性的具體內容,其內容包含JDK版本、EC技術、YARN的時間軸服務這三類特性,其他特性筆者在後面的部落格再為大家慢慢剖析。

2.1 JDK

  在Hadoop 3中,所有的Hadoop JAR包編譯的環境都是基於Java8來完成的,所有如果仍然使用的是Java 7或者更低的版本,你可能需要升級到Java 8才能正常的執行Hadoop3。如下圖所示:

 

2.2 EC技術

  首先,我們先來了解一下什麼是Erasure Encoding。如下圖所示:

  一般來說,在儲存系統中,EC技術主要用於廉價磁碟冗餘陣列,即RAID。如上圖,RAID通過Stripping實現EC技術,其中邏輯順序資料(比如:檔案)被劃分成更小的單元(比如:位、位元組或者是塊),並將連續單元儲存在不同的磁碟上。

  然後,對原始資料單元的每個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等。

2.3 YARN的時間線V.2服務

   Hadoop引入YARN Timeline Service v.2是為了解決兩個主要問題:

  1. 提高時間線服務的可伸縮性和可靠性;
  2. 通過引入流和聚合來增強可用性

  下面首先,我們來剖析一下它伸縮性。

2.3.1  伸縮性

  YARN V1僅限於讀寫單個例項,不能很好的擴充套件到小叢集之外。YARN V2使用了更具有伸縮性的分散式體系架構和可擴充套件的後端儲存,它將資料的寫入與資料的讀取進行了分離。並使用分散式收集器,本質上是每個YARN應用的收集器。讀則是獨立的例項,專門通過REST API服務來查詢

2.3.2  可用性

  對於可用性的改進,在很多情況下,使用者對流或者YARN應用的邏輯組的資訊比較感興趣。啟動一組或者一系列的YARN應用程式來完成邏輯應用是很常見的。如下圖所示:

2.3.3 架構體系

   YARN時間線服務V2採用了一組收集器寫資料到後端進行儲存。收集器被分配並與它們專用的應用程式主機進行協作,如下圖所示,屬於該應用程式的所有資料都被髮送到應用程式時間軸的收集器中,但是資源管理器時間軸收集器除外。

   

 

  對於給定的應用程式,應用程式可以將資料寫入同一時間軸收集器中。此外,為應用程式執行容器的其他節點的節點管理器,還會向執行應用程式主節點的時間軸收集器寫入資料。資源管理器還維護自己的時間手機線收集器,它只發布YARN的通用生命週期事件,以保持其寫入量合理。時間的讀取器是單獨的守護程式從收集器中分離出來的,它旨在服務於REST API查詢操作。

3.總結

  本篇部落格先給大家剖析前面幾個特性,其內容由JDK的版本升級、EC技術的作用及優勢、YARN的時間軸V2版本的主要作用。Hadoop3後面的幾個特性,在下一篇部落格為大家再剖析。

4.結束語

  這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!

相關文章