1. 程式人生 > >HDFS支援外部儲存

HDFS支援外部儲存

前言


在HDFS的使用過程中,有的時候我們會存在依賴外部資料讀取的操作。首先,HDFS叢集的資料存在容量問題,隨著資料量上升,需要的儲存空間必然要往上走。那麼這個時候,是否我們能夠有一種方式把部分資料存放到外部儲存上呢。這樣,我們將會在一定程度上增多HDFS的使用場景,比如空間能節省出來,還有內外部資料的互動,連通等等。本文,筆者來為大家闡述闡述HDFS在最近新版中的新特性之一:Provided Storage(提供式儲存)。

Provided Storage:提供式儲存


概念


用一句話來概括這裡的“提供式儲存”:

通過HDFS能夠定位到資料的外部儲存。

在現有階段,這個外部儲存只支援讀取操作,暫不支援外部儲存的寫。換句話說,對於使用者來說,提供式儲存能夠使得使用者通過現有HDFS邏輯訪問到外部儲存的資料。而且這個外部儲存的空間不受本身HDFS叢集容量的限制。

提供式儲存的關鍵點:元資料的對映


在提供式儲存的實現中,為了保持本身HDFS內部檔案讀取操作的邏輯與相容性要求,需要做到以下兩點:

  • 遠端檔案系統(外部儲存)需要實現Hadoop內部FileSystem介面。
  • 提供式儲存以新的Storage Type:PROVIDED型別被DN,NN所區別。就是說,當客戶端訪問的資料在PROVIDED型別的目錄下時,表明其下的資料來自於外部儲存。

除了以上2點,還有一個最為關鍵的步驟就是元資料的對映:HDFS Block資料對於遠端檔案系統檔案元資料的對映。

具體的實現思路如下:

  • 檔案元資料對映需要定義3要素<路徑,長度,偏移量>,這3個基本要素能夠準確定位出文件實際的資料位置。
  • 有額外工具能夠遍歷遠端檔案系統樹,得到一個只讀的名稱空間樹,這個樹裡面包含了HDFS Block與遠端檔案系統的對映關係,生成的Block是滿足HDFS Block規則的新Block物件。
  • HDFS NN,DN共享上面生成的對映關係檔案,然後當用戶訪問到外部儲存資料的時候,進行對映關係的轉換,DN再訪問遠端檔案系統資料。此過程如下圖所示,圖中的Alias map即元資料的對映關係資料,它可以從持久化的檔案中載入進來,而對映關係檔案則通過前面提到的工具獨立生成。

在這裡插入圖片描述

引用


[1].http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-hdfs/HdfsProvidedStorage.html