操作場景
默認情況下,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選擇節點范圍,再根據副本放置策略篩選節點,最后是在選擇的節點范圍內使用分級存盤功能選擇對應的節點和磁盤進行處理,
本文由華為云發布,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452020.html
標籤:其他
上一篇:什么是3D建模?
