HDFS儲存策略
請檢視原文:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html
(如果轉發,請標明出處)
介紹
歸檔儲存(Archival Storage)是將不斷增長的儲存容量與計算容量分離的解決方案。密度更高、儲存成本更低、計算能力更低的節點正在變得可用,可以用作叢集中的冷儲存。根據策略,可以將資料從熱節點移動到冷節點。向冷儲存新增更多節點可以獨立於叢集中的計算容量來增加儲存。
Heterogeneous Storage和歸檔儲存(Archival Storage)提供的框架將HDFS架構推廣到包含SSD和memory在內的其他型別的儲存介質。使用者為了更好的效能可以選擇將資料儲存到SSD或者memory。
儲存型別和儲存策略
儲存型別:ARCHIVE, DISK, SSD and RAM_DISK
Heterogeneous Storage (HDFS-2832)的第一個階段,將datanode 儲存模型從可能對應於多個物理儲存介質的單個儲存轉變成儲存集合,其中每個儲存對應於一個物理儲存介質。它還添加了儲存型別,DISK和SSD的概念,其中DISK是預設的儲存型別。
為了支援歸檔儲存,增加了一種新的儲存型別ARCHIVE,它具有較高的儲存密度(PB級別的儲存容量),但是計算能力較小。
添加了另一種新的儲存型別RAM _ DISK,用於支援在記憶體中寫入單個副本檔案。
儲存策略:Hot, Warm, Cold, All_SSD, One_SSD and Lazy_Persist
提出了一種新的儲存策略概念,使檔案可以根據儲存策略儲存在不同的儲存型別中。
目前有以下集中儲存策略:
① Hot - 用於儲存和計算。受歡迎且仍用於處理的資料將保留在此策略中。當資料塊處於hot狀態時,所有複製副本都儲存在DISK中。
② Cold -用於有限計算的儲存。不再使用的資料或者需要歸檔的資料將從hot儲存移動到cold儲存。當資料處於cold狀態時,所有副本將會儲存到ARCHIVE。
③ Warm -部分hot部分cold。當塊是warm時,一部分副本儲存到DISK,其餘副本儲存到ARCHIVE。
④ All_SSD -儲存所有副本到SSD。
⑤ One_SSD - 用於儲存一個副本到SSD,其他副本儲存到DISK。
⑥ Lazy_Persist - 用於記憶體中寫入單個副本的塊。副本首先寫入RAM_DISK,然後延遲儲存到磁碟。
更正式地說,儲存策略由以下欄位組成:
① Policy ID
② Policy name
③ 塊放置的儲存型別列表
④ 用於建立檔案的備用儲存型別列表
⑤ 用於放置副本的備用儲存型別列表
如果有足夠的空間,將根據#3中指定的儲存型別列表儲存資料塊副本。當#3中部分儲存型別空間不足時,#4 and #5中指定的備用的儲存型別列表將會替換空間不夠的儲存型別來用於檔案建立和副本複製。
以下是典型的儲存策略表:
需要注意的是Lazy_Persist 策略僅適用於單一副本的塊。對於具有多個副本的塊,所有副本都將會寫入 DISK,因為將其中一個副本寫入RAM_DISK 並不能提高整體效能。
儲存策略解析
當一個檔案或者目錄建立時,儲存策略並沒有指定。儲存策略可以通過 “storagepolicies -setStoragePolicy” 來進行指定。檔案或目錄的有效儲存策略由以下規則解析:
1) 如果檔案或者目錄指定了一個儲存策略,則返回這個儲存策略。
2) 對於沒有指定儲存策略的檔案或目錄,如果它是根目錄,則返回預設儲存策略,否則返回其父級目錄的有效儲存策略。
有效儲存策略可以通過“storagepolicies -getStoragePolicy”命令來獲得。
配置
(1) dfs.storage.policy.enabled - 允許/不允許使用儲存策略特徵,預設是true。
(2) dfs.datanode.data.dir -在每個資料節點上,應以逗號分隔的儲存位置標記其儲存型別。這就允許根據儲存策略將塊放到不同的儲存型別上,例如:
① 一個datanode 儲存位置 /grid/dn/disk0在DISK 上,應該配置為 [DISK]file:///grid/dn/disk0
② 一個datanode 儲存位置/grid/dn/ssd0在SSD上,應該配置為[SSD]file:///grid/dn/ssd0。
③ 一個datanode 儲存位置 /grid/dn/archive0 在ARCHIVE 上,應該配置為 [ARCHIVE]file:///grid/dn/archive0。
④ 一個datanode 儲存位置 /grid/dn/ram0 在 RAM_DISK上,應該配置為 [RAM_DISK]file:///grid/dn/ram0。
如果沒有指定儲存型別,預設的datanode儲存位置的儲存型別是DISK。
Mover - 一種新的資料遷移工具
添加了一個新的資料遷移工具來歸檔資料,這個工具類似於Balancer。它週期性的掃描HDFS上的檔案來檢視塊的放置是否符合儲存策略。對於違反儲存策略的塊,它會將副本移動到不同的儲存型別,以滿足儲存策略的要求。請注意,它總是儘可能嘗試在同一節點內移動塊副本,如果同一節點內不可能時(例如,當節點不具有目標儲存型別時),則它將通過網路將塊副本複製到另一個節點。
1) 命令:
hdfs mover [-p| -f]
2) 引數:
-p
指定要遷移的HDFS檔案/目錄,以空格分隔的列表。
-f
指定包含要遷移的HDFS檔案/目錄列表的本地檔案。
需要注意的是,當 -p 和 -f 都省略時,預設的目錄是根目錄( root directory)。
儲存策略命令:
列出儲存策略列表
列出所有儲存策略列表。
1) 命令:
hdfs storagepolicies -listPolicies
2) 引數:無
設定儲存策略
為一個檔案或者目錄設定儲存策略
1) 命令:
hdfs storagepolicies -setStoragePolicy -path-policy
2) 引數:
-path
指向檔案或者目錄的路徑
-policy
儲存策略名字
Unset儲存策略
對一個檔案或者目錄不設定儲存策略。unset命令後,將應用最近祖先的儲存策略,如果沒有任何祖先的策略,則將應用預設儲存策略。
1) 命令:
hdfs storagepolicies -unsetStoragePolicy -path
2) 引數:
-path
指向檔案或者目錄的路徑
得到儲存策略
得到一個檔案或者目錄的儲存策略
1) 命令:
hdfs storagepolicies -getStoragePolicy -path
2) 引數:
-path
指向檔案或者目錄的路徑