操作场景

默认状况下,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搁置地位(正本数)备选存储策略正本的备选存储策略
15LAZY_PERSISTRAM_DISK: 1, DISK: n-1DISKDISK
12All_SSDSSD: nDISKDISK
10ONE_SSDSSD: 1, DISK: n-1SSD, DISKSSD, DISK
7HOT (default)DISK: n< none>ARCHIVE
5WARMDISK: 1, ARCHIVE: n-1ARCHIVE, DISKARCHIVE, DISK
2COLDARCHIVE: n< none>< none>

以策略“15-LAZY_PERSIST”为例,如果Block正本数为3,配置了该策略的文件第1个Block正本将写入RAM_DISK,其余正本写入DISK。作为后备计划,如果第一个Block正本写入RAM_DISK类型存储介质失败,则尝试写入“备选存储策略”指定的存储类型;如果是第一个正本之外的其它正本写入失败,则尝试写入“正本的备选存储策略”指定的存储类型。

  1. 在FusionInsight Manager,抉择“集群 > 待操作集群的名称 > 服务 > HDFS > 配置 > 全副配置”。
  2. 查看“dfs.storage.policy.enabled”的参数值是否为默认值“true”,如果不是,请批改为“true”。
  3. 批改“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”
  4. 批改“dfs.datanode.max.locked.memory”的参数值,该参数值必须大于“dfs.blocksize”的参数值,小于已挂载的RAM_DISK磁盘的空间大小。
  5. 单击“保留”,在“保留配置”中单击“确定”,保留实现后抉择“更多 > 重启服务”,重启HDFS服务。界面提醒“操作胜利。”,单击“实现”,HDFS胜利启动。
  6. 在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节点上保留正本数据。

应用束缚

  1. 文件写入

    • 第一份正本将从强制机架组中选出,如果在强制机架组中没有可用节点,写入将会失败。
    • 第二份正本将从本地客户端机器或是机架组中的随机节点中(当客户端机器机架组不为强制机架组时)选出。
    • 第三份正本将从其余机架组中选出。
    • 各正本应寄存在不同的机架组中。如果所需正本的数量大于可用的机架组数量,则会将多出的正本寄存在随机机架组中。
  2. 因为正本数量的减少或数据块受损导致再次备份时,如果有一份以上的正本缺失或无奈寄存至强制机架组,将不会进行再次备份。零碎将会持续尝试进行从新备份,直至强制组中有失常节点复原可用状态。
  3. 如果对机架组策略进行了配置,Balancer将会在同一机架组内挪动数据块。
  4. 如果对机架组策略进行了配置,Mover将会在同一机架组内挪动数据块。
  5. 在写入文件时,节点的抉择将严格依照存储策略进行,因而在附加存储类型与强制机架组正本存储类型雷同的状况下,如在文件写入后或在删除过程中更改策略,只有强制组的正本不会被删除。

操作步骤

  1. 在FusionInsight Manager,单击“主机”。勾选指定的主机,抉择“更多 > 设置机架”,在“设置机架”中填写新机架的名称。单击“确定”保留机架配置信息。
  2. 在FusionInsight Manager,抉择“集群 > 待操作集群的名称 > 服务 > HDFS > 配置 > 全副配置”。
  3. 批改“dfs.block.replicator.classname”的参数值。默认值为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”示意NameNode应用默认算法将数据正本保留到HDFS。
    抉择“org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyWithRackGroup”,示意DataNode在保留数据时强制抉择指定的机架组。
  4. 批改“dfs.use.dfs.network.topology”的参数值,设置为“false”,示意在机架组块搁置策略中,不再应用DFSNetworkTopology。
  5. 批改“net.topology.impl”的参数值,设置为“org.apache.hadoop.net.NetworkTopologyWithRackGroup”,示意在机架组块搁置策略中,依照树形分层构造的网络拓扑组成计算机集群。
  6. 批改“dfs.blockplacement.mandatory.rackgroup.name”的参数值,用于指定要抉择的强制机架组。强制机架组能够只有一个。将此项留空或不进行配置,强制机架组概念将不会启用。
  7. 单击“保留”,在“保留配置”中单击“确定”,保留实现后在概览页面抉择“更多 > 重启服务”,启动HDFS服务。

界面提醒“操作胜利。”,单击“实现”,HDFS胜利启动。

数据存储策略应用倡议

  1. 本章节中波及到的两种数据存储策略,在应用前倡议先做好数据布局,依据不同的应用场景抉择适合的存储策略。
  2. 分级存储是针对存储介质,如SSD,SAS盘来抉择;其它两种存储策略是针对数据节点来做抉择。这两类是不同的概念层级。
  3. 标签存储与强制机架组二者是互斥关系,用户在抉择存储策略时,只能择其一。两者都能够搭配分级存储来应用。
  4. 针对所有的数据存储策略,以后能够同时反对以下几种管制形式:

    • 通过dfs.block.replicator.classname管制应用某种正本搁置策略,之间的配置互斥(默认搁置策略,NodeLabel搁置策略,可用空间搁置策略,机架组搁置策略)。
    • 应用分级存储性能。

如果以上3条管制都启动,HDFS的解决程序是首先依据NodeLabel抉择节点范畴,再依据正本搁置策略筛选节点,最初是在抉择的节点范畴内应用分级存储性能抉择对应的节点和磁盘进行解决。

本文由华为云公布