hdfs冷熱數據分層存儲


hdfs如何讓某些數據查詢快,某些數據查詢慢?

  • hdfs冷熱數據分層存儲

本質: 不同路徑制定不同的存儲策略。

hdfs存儲策略

hdfs的存儲策略 依賴於底層的存儲介質。

  • hdfs支持的存儲介質:
  1. ARCHIVE:高存儲密度但耗電較少的存儲介質,例如磁帶,通常用來存儲冷數據
  2. DISK:磁盤介質,這是HDFS最早支持的存儲介質
  3. SSD:固態硬盤,是一種新型存儲介質,目前被不少互聯網公司使用
  4. RAM_DISK :數據被寫入內存中,同時會往該存儲介質中再(異步)寫一份
  • 存儲策略可配置,可以設置全局的,也可以設置到某個文件夾。
  1. Lazy_persist:一個副本保存在內存RAM_DISK中,其余副本保存在磁盤中
  2. ALL_SSD:所有副本都保存在SSD中
  3. One_SSD:一個副本保存在SSD中,其余副本保存在磁盤中
  4. Hot:所有副本保存在磁盤中,這也是默認的存儲策略
  5. Warm:一個副本保存在磁盤上,其余副本保存在歸檔存儲上
  6. Cold:所有副本都保存在歸檔存儲上

所謂的存儲策略,其實就是將數據存儲在不同的存儲介質中。如果數據存儲在SSD中,讀寫速度自然比存儲在機械硬盤中的數據快。

總體上HDFS異構存儲的價值在於,根據數據熱度采用不同策略從而提升集群整體資源使用效率。對於頻繁訪問的數據,將其全部或部分保存在更高訪問性能的存儲介質(內存或SSD)上,提升其讀寫性能;對於幾乎不會訪問的數據,保存在歸檔存儲介質上,降低其存儲成本。但是HDFS異構存儲的配置需要用戶對目錄指定相應的策略,即用戶需要預先知道每個目錄下的文件的訪問熱度,在實際大數據平台的應用中,這是比較困難的一點。

如何配置存儲策略

$ hdfs storagepolicies -help
[-listPolicies]

List all the existing block storage policies.

[-setStoragePolicy -path <path> -policy <policy>]

Set the storage policy to a file/directory.

<path>    The path of the file/directory to set storage policy 
<policy>  The name of the block storage policy                 

[-getStoragePolicy -path <path>]

Get the storage policy of a file/directory.

<path>  The path of the file/directory for getting the storage policy 

事先划分好冷熱數據存儲目錄,設置好對應的Storage Policy,然后后續相應的程序在對應分類目錄下寫數據,自動繼承父目錄的存儲策略。

如何修改已有配置?

數據遷移

為了讓存儲策略生效了,hdfs中提供了一個新的數據遷移工具mover,mover與balancer工具相似都是周期觸發的,運行時,它會掃描hdfs中各個文件的block以確認該block塊的當前存儲是否滿足用戶指定的storage policy,對於那些storage policy發生變化的block塊,該工具會將對應的block塊進行遷移。

關於HBASE的冷熱數據存儲

  • HBASE數據存儲於hdfs的相對路徑,可以通過制定hbase相對路徑的存儲策略,來讓hbase的數據存儲於SSD

hbase如何利用上述hdfs的異構存儲特性?

HBase-12848(Utilize Flash storage for WAL)是1.1.0新推出的特性,它可以將WAL單獨置於SSD上,配置方式是將如下的配置做相應修改:

hbase.wal.storage.policy

該配置的默認值是NONE,也就是wal文件和數據都存儲在DISK上,不做區分,可以修改為ONE_SSD或者ALL_SDD,不同在於:
ONE_SSD:wal的一個副本置於SSD上,而其他副本仍然在默認存儲;
ALL_SSD:wal文件的所有副本都存儲於SSD盤上;

HDFS糾刪碼

HDFS糾刪碼技術能夠降低數據存儲的冗余度,以RS(3,2)為例,其數據冗余度為67%,相比Hadoop默認的200%大為減少。但是糾刪碼技術存儲數據和數據恢復都需要消耗cpu進行計算,實際上是一種以時間換空間的選擇,因此比較適用的場景是對冷數據的存儲。冷數據存儲的數據往往一次寫入之后長時間沒有訪問,這種情況下可以通過糾刪碼技術減少副本數。

大數據存儲優化:SSM

SSM(Smart Storage Management)系統

異構存儲原理

概況性的總結為3小點:

  1. DataNode通過心跳匯報自身數據存儲目錄的StorageType給NameNode,
  2. 隨后NameNode進行匯總並更新集群內各個節點的存儲類型情況
  3. 待復制文件根據自身設定的存儲策略信息向NameNode請求擁有此類型存儲介質的DataNode作為候選節點

從以上3點來看,本質原理並不復雜.

其他問題探討

  1. 同一類數據內部 是否支持冷熱數據存儲?比如讓1年內的數據查詢比較快,2-5年的數據查詢比較慢?
  • A: 有幾個方案:
    • SSM: 不成熟,還未大量使用
    • 分表:需要編寫分表中間件等。此外hbase的region實際上就是幫我們做了分表的工作,屏蔽了分表的細節。
      ......

參考文獻


tips:本文屬於自己學習和實踐過程的記錄,很多圖和文字都粘貼自網上文章,沒有注明引用請包涵!如有任何問題請留言或郵件通知,我會及時回復。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM