華為雲FusionInsight MRS HDFS元件資料儲存策略配置指導
阿新 • • 發佈:2022-03-29
操作場景
預設情況下,HDFS NameNode自動選擇DataNode儲存資料的副本。在實際業務中,可能存在以下場景:
- DataNode上可能存在不同的儲存裝置,資料需要選擇一個合適的儲存裝置分級儲存資料。
- DataNode不同目錄中的資料重要程度不同,資料需要根據目錄標籤選擇一個合適的DataNode節點儲存。
- DataNode叢集使用了異構伺服器,關鍵資料需要儲存在具有高度可靠性的機架組中。
對系統的影響
配置HDFS資料儲存策略需要重啟服務,服務重啟時無法訪問。
前提條件
- 管理員已根據業務需要,規劃資料儲存的策略。
- 已安裝HDFS客戶端,請參見“管理員指南”中的“安裝客戶端”章節。
配置DataNode使用分級儲存
HDFS的異構分級儲存框架提供了RAM_DISK、DISK、ARCHIVE、SSD四種儲存型別的儲存裝置,以對應DataNode上可能存在的不同的儲存介質。
- RAM_DISK是一種由記憶體虛擬的硬碟,具有最高的讀寫效能。其容量受限於記憶體大小,通常容量很小,且掉電可能丟失資料。
- SSD即固態硬碟,具有較高的讀寫效能。但通常儲存容量較小,單位儲存成本比普通機械硬碟高。
- DISK即普通機械硬碟,是HDFS用於儲存資料的主力儲存型別。
- ARCHIVE型別代表高密度低成本的儲存介質,讀寫效能相對較差,通常裝配於計算能力較低的節點,用於大容量非熱點資料儲存。
通過對四種儲存型別進行合理組合,即可形成適用於不同場景的儲存策略。目前HDFS支援的儲存策略如下表所示:
策略ID | 名稱 | Block放置位置(副本數) | 備選儲存策略 | 副本的備選儲存策略 |
---|---|---|---|---|
15 | LAZY_PERSIST | RAM_DISK: 1, DISK: n-1 | DISK | DISK |
12 | All_SSD | SSD: n | DISK | DISK |
10 | ONE_SSD | SSD: 1, DISK: n-1 | SSD, DISK | SSD, DISK |
7 | HOT (default) | DISK: n | < none> | ARCHIVE |
5 | WARM | DISK: 1, ARCHIVE: n-1 | ARCHIVE, DISK | ARCHIVE, DISK |
2 | COLD | ARCHIVE: n | < none> | < none> |
以策略“15-LAZY_PERSIST”為例,如果Block副本數為3,配置了該策略的檔案第1個Block副本將寫入RAM_DISK,其餘副本寫入DISK。作為後備方案,如果第一個Block副本寫入RAM_DISK型別儲存介質失敗,則嘗試寫入“備選儲存策略”指定的儲存型別;如果是第一個副本之外的其它副本寫入失敗,則嘗試寫入“副本的備選儲存策略”指定的儲存型別。
- 在FusionInsight Manager,選擇“叢集 > 待操作叢集的名稱 > 服務 > HDFS > 配置 > 全部配置”。
- 檢視“dfs.storage.policy.enabled”的引數值是否為預設值“true”,如果不是,請修改為“true”。
- 修改“dfs.datanode.data.dir”的引數值。預設情況下系統認為資料儲存的儲存裝置為DISK,此時需要根據實際儲存裝置的型別修改,引數值為“[儲存設定型別]儲存目錄”,多個目錄使用逗號隔開。修改效果如下:
“[RAM_DISK]/home/hadoop/dfs/ram,[SSD]/home/hadoop/dfs/ssd,/home/hadoop/dfs/hd,[ARCHIVE]/home/hadoop/dfs/archive”
- 修改“dfs.datanode.max.locked.memory”的引數值,該引數值必須大於“dfs.blocksize”的引數值,小於已掛載的RAM_DISK磁碟的空間大小。
- 單擊“儲存”,在“儲存配置”中單擊“確定”,儲存完成後選擇“更多 > 重啟服務”,重啟HDFS服務。介面提示“操作成功。”,單擊“完成”,HDFS成功啟動。
- 在HDFS客戶端執行命令hdfs storagepolicies -setStoragePolicy -path < path> -policy < policy name>來指定特定路徑的目錄< path>,按照策略< policy name>進行分級儲存例如,對根路徑下test目錄按照“LAZY_PERSIST”策略進行儲存時,可執行如下命令:
hdfs storagepolicies -setStoragePolicy -path /test -policy LAZY_PERSIST
配置DataNode使用機架組儲存
在實際業務中,關鍵資料根據實際業務需要儲存在具有高度可靠性的節點中,此時DataNode組成了異構叢集。通過修改DataNode的儲存策略,系統可以將資料強制儲存在指定的機架組中。
機架組表示多個機架的集合。配置此儲存策略後關鍵資料將強制優先在此機架組的所有DataNode節點上儲存副本資料。
使用約束
- 檔案寫入
- 第一份副本將從強制機架組中選出,如果在強制機架組中沒有可用節點,寫入將會失敗。
- 第二份副本將從本地客戶端機器或是機架組中的隨機節點中(當客戶端機器機架組不為強制機架組時)選出。
- 第三份副本將從其他機架組中選出。
- 各副本應存放在不同的機架組中。如果所需副本的數量大於可用的機架組數量,則會將多出的副本存放在隨機機架組中。
- 由於副本數量的增加或資料塊受損導致再次備份時,如果有一份以上的副本缺失或無法存放至強制機架組,將不會進行再次備份。系統將會繼續嘗試進行重新備份,直至強制組中有正常節點恢復可用狀態。
- 如果對機架組策略進行了配置,Balancer將會在同一機架組內移動資料塊。
- 如果對機架組策略進行了配置,Mover將會在同一機架組內移動資料塊。
- 在寫入檔案時,節點的選擇將嚴格按照儲存策略進行,因此在附加儲存型別與強制機架組副本儲存型別相同的情況下,如在檔案寫入後或在刪除過程中更改策略,只有強制組的副本不會被刪除。
操作步驟
- 在FusionInsight Manager,單擊“主機”。勾選指定的主機,選擇“更多 > 設定機架”,在“設定機架”中填寫新機架的名稱。單擊“確定”儲存機架配置資訊。
- 在FusionInsight Manager,選擇“叢集 > 待操作叢集的名稱 > 服務 > HDFS > 配置 > 全部配置”。
- 修改“dfs.block.replicator.classname”的引數值。預設值為“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”表示NameNode使用預設演算法將資料副本儲存到HDFS。
選擇“org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyWithRackGroup”,表示DataNode在儲存資料時強制選擇指定的機架組。 - 修改“dfs.use.dfs.network.topology”的引數值,設定為“false”,表示在機架組塊放置策略中,不再使用DFSNetworkTopology。
- 修改“net.topology.impl”的引數值,設定為“org.apache.hadoop.net.NetworkTopologyWithRackGroup”,表示在機架組塊放置策略中,按照樹形分層結構的網路拓撲組成計算機叢集。
- 修改“dfs.blockplacement.mandatory.rackgroup.name”的引數值,用於指定要選擇的強制機架組。強制機架組可以只有一個。將此項留空或不進行配置,強制機架組概念將不會啟用。
- 單擊“儲存”,在“儲存配置”中單擊“確定”,儲存完成後在概覽頁面選擇“更多 > 重啟服務”,啟動HDFS服務。
介面提示“操作成功。”,單擊“完成”,HDFS成功啟動。
資料儲存策略使用建議
- 本章節中涉及到的兩種資料儲存策略,在使用前建議先做好資料規劃,根據不同的使用場景選擇合適的儲存策略。
- 分級儲存是針對儲存介質,如SSD,SAS盤來選擇;其它兩種儲存策略是針對資料節點來做選擇。這兩類是不同的概念層級。
- 標籤儲存與強制機架組二者是互斥關係,使用者在選擇儲存策略時,只能擇其一。兩者都可以搭配分級儲存來使用。
- 針對所有的資料儲存策略,當前可以同時支援以下幾種控制方式:
- 通過dfs.block.replicator.classname控制使用某種副本放置策略,之間的配置互斥(預設放置策略,NodeLabel放置策略,可用空間放置策略,機架組放置策略)。
- 使用分級儲存功能。
如果以上3條控制都啟動,HDFS的處理順序是首先根據NodeLabel選擇節點範圍,再根據副本放置策略篩選節點,最後是在選擇的節點範圍內使用分級儲存功能選擇對應的節點和磁碟進行處理。
本文由華為雲釋出。