配置HDFS冷热数据迁移
配置场景
冷热数据迁移工具根据配置的策略移动HDFS文件。配置策略是条件或非条件规则的集合。如果规则匹配文件集,则该工具将对该文件执行一组行为操作。
冷热数据迁移工具支持以下规则和行为。
- 迁移规则:
- 根据文件的最后访问时间迁移数据
- 根据年龄时间迁移数据(修改时间)
- 无条件迁移数据
表1 规则条件标签 条件标签
描述
<age operator="lt">
定义年龄/修改时间的条件。
<atime operator="gt">
定义访问时间的条件。
对于手动迁移规则,不需要条件。
- 行为列表:
- 将存储策略设置为给定的数据层名称
- 迁移到其他文件夹
- 为文件设置新的副本数
- 删除文件
- 设置节点标签(NodeLabel)
表2 行为类型 行为类型
描述
所需参数
MARK
为确定数据的冷热度并设置相应的数据存储策略。
<param>
<name>targettier</name>
<value>STORAGE_POLICY</value>
<param>
MOVE
为设置数据存储策略或NodeLabel并调用HDFS Mover工具。
<param>
<name>targettier</name>
<value>STORAGE_POLICY</value>
<param>
<param>
<name>targetnodelabels</name>
<value>SOME_EXPRESSION</value>
<param>
说明:用户可以配置其中任一参数或两者都配置。
SET_REPL
为文件设置新的副本数。
<param>
<name>replcount</name>
<value>INTEGER</value>
<param>
MOVE_TO_FOLDER
将文件移动到目标文件夹。如果“overwrite”参数为“true”,则目标路径将被覆盖。
<param>
<name>target</name>
<value>PATH</value>
<param>
<param>
<name>overwrite</name>
<value>true/false</value>
<param>
说明:“overwrite”是可选参数,如果未配置,则默认值为“false”。
DELETE
删除文件。
NA
配置描述
必须定期调用迁移工具,并需要在客户端的“hdfs-site.xml”文件中进行以下配置。
参数 |
描述 |
默认值 |
---|---|---|
dfs.auto-data-movement.policy.class |
用于指定默认的数据迁移策略。
说明:
当前只支持DefaultDataMovementPolicy。 |
com.huawei.hadoop.hdfs.datamovement.policy.DefaultDataMovementPolicy |
dfs.auto.data.mover.id |
冷热数据迁移输出(行为状态)文件的名称。 |
当前系统时间(毫秒) |
dfs.auto.data.mover.output.dir |
冷热数据迁移输出在HDFS中的目录名称。迁移工具将在此处写入行为状态文件。 |
/system/datamovement |
DefaultDataMovementPolicy拥有配置文件“default-datamovement-policy.xml”。用户需要定义所有基于age/accessTime的规则和在此文件中采取的行为操作,此文件必须存储在客户端的classpath中。
如下为“default-datamovement-policy.xml”配置文件的示例:
<policies> <policy> <fileset> <file> <name>/opt/data/1.txt</name> </file> <file> <name>/opt/data/*/subpath/</name> <excludes> <name>/opt/data/some/subpath/sub1</name> </excludes> </file> </fileset> <rules> <rule> <age>2w</age> <action> <type>MOVE</type> <params> <param> <name>targettier</name> <value>HOT</value> </param> </params> </action> </rule> </rules> </policy> </policies>
在策略,规则和行为操作中使用的标签中,可以添加其他属性,例如“name”可用于管理用户界面(例如:Hue UI)和工具输入xml之间的映射。
示例: <policy name="Manage_File1">
标签(Tag)说明如下:
标签(Tag)名称 |
描述 |
是否可重复使用 |
---|---|---|
<policy> |
定义单一策略。 |
Yes |
<fileset> |
为每个策略定义一组文件/文件夹。 |
No (在policy标签内) |
<file> |
定义文件和/或文件夹在<file>标签内被配置一个或者多个<name>标签。文件/文件夹名支持POSIX globs配置。 |
Yes (在fileset标签内) |
<excludes> |
在<file>标签内定义该标签,该标签下可以包含多个<name>标签,在<file>标签中配置的文件或文件夹范围下,<name>标签所包含的文件或文件夹将会被排除。文件或文件夹名支持POSIX globs配置。 |
No (在fileset标签内) |
<rules> |
针对策略定义多个规则。 |
No (在policy标签内) |
<rule> |
定义单一规则。 |
Yes (在rules标签内) |
<age>or<atime> |
定义在<fileset>中定义的文件的age/accesstime。策略将匹配该age。age可以用[num]y[num]m[num]w[num]d[num]h的格式表示。其中num表示数字。 其中字母的意思如下: * y--年(一年是365天)。 * m--月(一个月是30天)。 * w--周(一周是7天)。 * d--天。 * h--小时。 可以单独使用年,月,周,天或小时,也可以将时间组合。比如,1y2d表示1年零2天或者367天。 如果没有单位(即数字后面没有任何上述字母),默认单位为天。
说明:
用户可以在<age>和<atime>标签中配置“gt”(greater)和“lt”(less),默认运算符为“gt”。 示例:<age operator="lt"> |
No (在rule标签内) |
<action> |
如果规则匹配,这个标签定义了要执行的action。 |
No (在rule标签内) |
<type> |
定义了action类型。当前支持的action类型是MOVE和MARK。 |
No (在action标签内) |
<params> |
定义与每个action相关的参数。 |
No (在action标签内) |
<param> |
定义单个使用<name>和<value>标签的name-value格式参数。 对于MARK和MOVE,只支持参数名“targettier”。该参数表示如果满足age规则,则指定数据存储策略。 如果多个param中具有相同name的参数,则采用第一个参数值。 对于MARK,支持的“targettier”参数值为“ALL_SSD”,“ONE_SSD”,“HOT”,“WARM”,“COLD”。 对于MOVE,支持的“targettier”参数值为“ALL_SSD”,“ONE_SSD”,“HOT”,“WARM”和“COLD”。 |
Yes (在params标签内) |
对于在<file>标签下的文件/文件夹使用FileSystem#globStatus API,对于其他的使用GlobPattern类(被GlobFilter使用)。参照支持的API的细节。例如,对于globStatus,“/opt/hadoop/*”将匹配“/opt/hadoop”文件夹下的一切。“/opt/*/hadoop”将匹配/“opt”目录的子目录下的所有hadoop文件夹。
对于globStatus,分别匹配每个路径组件的glob模式,而对于其他的,直接匹配glob模式。
行为操作示例
- MARK
<action> <type>MARK</type> <params> <param> <name>targettier</name> <value>HOT</value> </param> </params> </action>
- MOVE
<action> <type>MOVE</type> <params> <param> <name>targettier</name> <value>HOT</value> </param> <param> <name>targetnodelabels</name> <value>SOME_EXPRESSION</value> </param> </params> </action>
- SET_REPL
<action> <type>SET_REPL</type> <params> <param> <name>replcount</name> <value>5</value> </param> </params> </action>
- MOVE_TO_FOLDER
<action> <type>MOVE_TO_FOLDER</type> <params> <param> <name>target</name> <value>path</value> </param> <param> <name>overwrite</name> <value>true</value> </param> </params> </action>
MOVE_TO_FOLDER操作只是将文件路径更改为目标文件夹,不会更改块位置。如果想要移动块,则需要配置一个独立的move策略。
- DELETE
<action> <type>DELETE</type> </action>
- 在编写xml文件时,用户应该注意行为操作的配置和顺序。冷热数据迁移工具按照输入xml中给定的顺序执行规则。
- 如果只希望运行基于atime/age的一个规则,则按照时间逆序排列,且将idempotent属性设置为false。
- 如果为文件集配置删除操作,则在删除操作后不能再配置其他规则。
- 支持使用"-fs"选项,用于指定客户端默认的文件系统地址。
审计日志
冷热数据迁移工具支持以下操作的审计日志。
- 工具启动状态
- 行为类型及参数详细信息和状态
- 工具完成状态
对于启用审计日志工具,在“<HADOOP_CONF_DIR>/log4j.property”文件中添加以下属性。
autodatatool.logger=INFO, ADMTRFA autodatatool.log.file=HDFSAutoDataMovementTool.audit log4j.logger.com.huawei.hadoop.hdfs.datamovement.HDFSAutoDataMovementTool.audit=${autodatatool.logger} log4j.additivity.com.huawei.hadoop.hdfs.datamovement.HDFSAutoDataMovementTool-audit=false log4j.appender.ADMTRFA=org.apache.log4j.RollingFileAppender log4j.appender.ADMTRFA.File=${hadoop.log.dir}/${autodatatool.log.file} log4j.appender.ADMTRFA.layout=org.apache.log4j.PatternLayout log4j.appender.ADMTRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n log4j.appender.ADMTRFA.MaxBackupIndex=10 log4j.appender.ADMTRFA.MaxFileSize=64MB
具体请参考“<HADOOP_CONF_DIR>/log4j_autodata_movment_template.properties”文件。