大資料儲存平臺之異構儲存實踐深度解讀

趙鈺瑩發表於2018-06-06

經常做資料處理的夥伴們肯定會有這樣一種體會:最近一週內的資料會被經常使用到,而比如最近幾周的資料使用率會有下降,每週僅僅被訪問幾次;在比如3月以前的資料使用率會大幅下滑,儲存的資料可能一個月才被訪問幾次。

  這就產生了一種熱和冷資料,對需要頻繁訪問的資料我們稱之為“熱”資料,反之我們稱之為”冷”資料,而處於中間的資料我們稱之為”溫”資料。

  在資料被視為公司資產的時代,每個公司基本都會儲存最近數年的資料,而這些資料尤其是冷資料的累積也給儲存平臺帶來了甜蜜的負擔。下面就來分享下如何解決這些“負擔”。

  首先如何定義資料為冷熱資料呢,eBay公司根據資料年齡和使用頻率來定義不失為一種辦法,下圖為eBay關於資料溫度的定義

大資料儲存平臺之異構儲存實踐深度解讀

  從hadoop2.6開始,HDFS更好的支援了這種冷熱資料的分離儲存,我們可以按HDFS路徑指定其儲存策略,目前HDFS支援的儲存策略有:HOT、WARM、COLD、All_SSD、One_SSD、Lazy_Persist,我們著重介紹SSD相關的儲存策略,具體如下:

  All_SSD – 用於將所有副本儲存在SSD中

  One_SSD – 用於將其中一個副本儲存在SSD中。剩餘的副本儲存在DISK中

  Lazy_Persist – 用於在記憶體中寫入單個副本的塊。該副本首先寫入RAM_DISK,然後在DISK中延續

  建立檔案或目錄時,其儲存策略未指定。可以使用“hdfs dfsadmin -setStoragePolicy ”命令指定儲存策略。檔案或目錄的有效儲存策略由以下規則解決。

  1. 如果檔案或目錄特定於儲存策略,則返回。

  2. 對於未指定的檔案或目錄,如果是根目錄,則返回預設儲存策略。否則,返回其父級的有效儲存策略。

  我們在實踐過程中,因為有一部分實時分析的需求,一部分是歷史資料的儲存,歷史資料很少參與計算,只需偶爾查詢會用到。那麼對於歷史資料來說,我們可以使用一批計算能力較弱,而硬碟較多、容量較大的SATA盤,而實時分析的場景,需要高效能的計算力和硬碟吞吐能力,我們選用SSD硬碟來支撐,此外HDFS還提供了記憶體儲存型別,但我們的記憶體還是有限,暫未使用到。實際上,我們的每臺伺服器的12塊硬碟slot中有3個是SSD,其餘9個是SATA。我們實踐結果表明,使用這種策略的效果比以前好了4倍以上。

  要使用儲存策略,我們需要在在每個資料節點上hdfs-site.xml中引數dfs.datanode.data.dir配置的由逗號分隔的儲存位置使用的儲存型別進行標記。例如:

  1. 使用[DISK]file:///dfs/dn來標識這個儲存位置為普通硬碟

  2. 使用[SSD]file:/// dfs/dn來標識這個儲存位置為SSD硬碟

  此外,預設情況下的儲存格式為DISK。

  下面介紹設定儲存策略命令:

  hdfsstoragepolicies -setStoragePolicy -path -policy

  相應的獲取儲存策略命令為:

  hdfs storagepolicies -getStoragePolicy -path

  總結下:我們可以在一個限定的Hadoop叢集中進行設定不同的磁碟使用不同的儲存策略,還可以利用API將資料儲存到不同的儲存層。HDFS設計的詳細儲存型別和儲存策略如下表,有興趣的同學可以看看:

大資料儲存平臺之異構儲存實踐深度解讀

  注:HDFS新加的ARCHIVE儲存型別, 它是一種支援PB級的高容量儲存但很少的 計算能力,用於歸檔資料使用,從上圖可以看出冷資料適合使用archive儲存型別。

原文釋出時間為:2018-06-7

本文來自雲棲社群合作伙伴“IT168”,瞭解相關資訊可以關注“IT168”。


相關文章