
# 配置MRS集群组件回收站目录和OBS碎片生命周期
#### 操作场景
在MRS 3.2.0-LTS.1及后续版本中，集群内组件默认支持数据防误删策略，确保用户删除的文件数据不会直接被删除，而是会被保存到OBS文件系统内的用户回收站目录中。这一功能与Hadoop FS原生的垃圾回收机制兼容，为基于OBS的Hadoop大数据系统提供了额外的数据保护。
本章节用于指导用户设置OBS文件系统内回收站目录和碎片的生命周期策略，以定时自动清理相关数据。
由于回收站目录是按用户维度创建的，当MRS集群内新增用户且该用户具备组件数据的删除权限时，需为新用户单独配置回收站目录的清理策略。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/caution_3.0-zh-cn.png)
- **配置集群使用存算分离方案后，必须参考本章节内容配置相关目录的生命周期策略，否则会有存储空间被占满以及增加存储资源费用的风险，关于OBS更多计费说明请参考[OBS计费概述](https://support.huaweicloud.com/price-obs/obs_42_0001.html)。**
- **由于OBS的[多段上传](https://support.huaweicloud.com/usermanual-obs/obs_41_0021.html)机制，写入数据到OBS的任务中断或失败时，会在OBS中产生OBS文件碎片，碎片会在OBS中产生存储费用，因此必须配置对应目录的生命周期策略以避免增加存储成本** **，详细说明请参见[清理碎片](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829110.html)**。
 
需为**MRS集群预置用户所涉及的回收站目录** 和**其他新增的有防误删需求的用户的回收站目录配置生命周期策略。** 若委托权限较小或参考[配置MRS集群用户的OBS的细粒度访问权限](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0632.html)配置了MRS用户访问OBS文件系统下的目录的权限，则还需配置回收站目录的操作权限。
表1需要配置生命周期策略的目录 
| 集群版本                | 回收站目录类型                  | 组件名称                   | 回收站目录                                                                                                                                                                                                                                                                                              | 创建回收站目录                                                                                                                                                                     |
|:---|:---|:---|:---|:---|
| MRS 3.3.0-LTS之前版本   | MRS集群内各组件默认需至少配置的回收站目录   | Hive                   | - user/omm/.Trash  - user/hive/.Trash                                                                                  | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
| MRS 3.3.0-LTS之前版本   | MRS集群内各组件默认需至少配置的回收站目录   | Spark                  | - user/omm/.Trash  - user/root/.Trash  - user/spark2x/.Trash   | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
| MRS 3.3.0-LTS之前版本   | MRS集群内各组件默认需至少配置的回收站目录   | HetuEngine             | - user/omm/.Trash  - user/hetuserver/.Trash                                                                                  | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
| MRS 3.3.0-LTS之前版本   | MRS集群内各组件默认需至少配置的回收站目录   | HBase                  | - user/hbase/.Trash  - user/omm/.Trash                                                                                      | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
| MRS 3.3.0-LTS之前版本   | **其他新增的有防误删需求的用户的回收站目录** | Hive/Spark/HetuEngine等 | user/*\<新增的业务用户\>*/.Trash                                                                                                                                                                                                                                                                          | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
| MRS 3.3.0-LTS及之后的版本 | MRS集群内各组件默认的回收站目录        | Hive/Spark/HetuEngine等 | /user/.Trash                                                                                                                                                                                                                                                                                       | 对应的".Trash"文件夹若不存在需使用**omm**用户通过集群客户端手动创建。 例如执行以下命令： **hdfs dfs -mkdir -p obs://** *表所在的OBS并行文件系统名称* /*文件夹路径* |
   
例如集群新增了具有以下权限的用户时，也需在并行文件系统中创建对应用户回收站目录清理策略。
- 具有HDFS文件删除权限的用户。
- 具有Hive表DROP、INSERT OVERWRITE、TRUNCATE操作的用户。
- 具有HetuEngine DROP、TRUNCATE、DELETE、INSERT OVERWRITE、LOAD OVERWRITE操作权限的用户。
MRS各组件支持误删恢复的命令如下表所示：
表2支持误删恢复的命令 
| 组件名称       | 支持误删恢复的命令                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|
| Hive       | - 删除表： ``` drop table ```   - 清空表数据： ``` truncate table ```   - 删除表分区： ``` alter table drop partition ```   - 对表或分区进行覆写操作： ``` insert overwrite table [partition] ```   - 对目录进行覆写操作： ``` insert overwrite directory ```   - 对表或分区进行覆写操作： ``` load data overwrite ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Spark      | - 删除表： ``` drop table ```   - 清空表数据： ``` truncate table ```   - 清空表分区： ``` truncate table table_name partition ```   - 删除表分区： ``` alter table drop partition ```   - 对表或分区进行覆写操作： ``` insert overwrite table [partition] ```   - 对目录进行覆写操作： ``` insert overwrite directory ```   - 对表或分区进行覆写操作： ``` load data overwrite ```                                                                                                                                                                                                                                                                                                                                                                                                                          |
| HetuEngine | - 删除表： ``` drop table ```   - 清空表数据： ``` truncate table ``` ``` delete table ```   - 删除表分区： ``` alter table drop partition ``` ``` delete table where [partition] ```   - 对表或分区进行覆写操作： ``` insert overwrite table [partition] ```   - 对表或分区进行覆写操作： ``` load data overwrite ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Hudi       | - 删除表： ``` drop table ```   - 删除表分区： - SQL执行： ``` alter table drop partition ```   - API执行： ``` delete_partition ```     - 删除行级数据： - SQL执行： ``` delete from ```   - API执行： ``` delete ```     - 清空表数据： ``` truncate table ```   - 覆写表： - SQL执行： ``` insert overwrite ``` ``` insert overwrite table ```   - API执行： ``` insert_overwrite ``` ``` insert_overwrite_table ```      |
   
#### 配置OBS目录生命周期规则
1. 登录[OBS管理控制台](https://console.huaweicloud.com/obs/)。
2. 选择"并行文件系统"，单击当前MRS集群使用的文件系统名称。
3. 选择"数据管理 \> 生命周期规则"，单击"创建"，创建指定目录的生命周期规则，相关参数详细介绍请参见[配置生命周期规则](https://support.huaweicloud.com/usermanual-obs/obs_03_0335.html)。
   
   表3生命周期规则创建参数 
   | 参数名称     | 描述                                                                                                                                                                                                                                                                                                               | 示例              |
   |:---|:---|:---|
   | 状态       | 是否启用本条生命周期规则。                                                                                                                                                                                                                                                                                                    | 启用              |
   | 规则名称     | 规则名称，可自定义，用于识别不同的生命周期配置。                                                                                                                                                                                                                                                                                         | rule-test       |
   | 前缀       | 满足指定前缀的对象将受生命周期规则管理，输入的对象前缀不能包括**\\:\*?"\<\>\|**特殊字符，不能以/开头，不能两个/相邻。如果不输入则表示配置到整个文件系统。 警告： 为防止其他业务数据被误删除，不建议使用配置到整个文件系统或者层级较高的目录的生命周期规则。 生命周期规则适用的对象前缀，MRS集群组件数据回收站目录通常为如下路径，该文件夹若不存在，需提前手动创建： user/*\<用户名\>*/.Trash | user/omm/.Trash |
   | 文件过期删除天数 | 策略配置范围内的对象最后一次更新后时间达到指定的天数后，对象将过期并自动被OBS删除，推荐配置为1\~7天。                                                                                                                                                                                                                                                           | 2天              |
      
   
   
4. 单击"确定"，完成生命周期规则配置。 
   若您需修改生命周期的内容，请单击该生命周期规则所在行右侧的"编辑"进行编辑；单击"禁用"，可以禁用该生命周期规则，单击"启用"，可启用该生命周期规则。
   
   
5. 继续参考以上步骤，逐一创建针对当前MRS集群所有具有数据删除权限的用户的回收站目录清理策略，直至所有在OBS文件系统中的回收站目录都配置完毕。
 
#### 配置OBS碎片生命周期规则
1. 登录[OBS管理控制台](https://console.huaweicloud.com/obs/)。
2. 选择"并行文件系统"，单击当前MRS集群使用的文件系统名称。
3. 选择"数据管理 \> 生命周期规则"，单击"创建"，创建OBS碎片的生命周期规则。
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/caution_3.0-zh-cn.png)
   推荐单独为OBS碎片新增一条针对所有文件的生命周期规则，与组件回收站目录配置的生命周期规则分开。
   表4生命周期规则创建参数 
   | 分类       | 参数名称 | 描述                                                    | 示例         |
   |:---|:---|:---|:---|
   | 基本信息     | 状态   | 是否启用本条生命周期规则。                                         | 启用         |
   | 基本信息     | 规则名称 | 规则名称，可自定义，用于识别不同的生命周期配置。                              | rule-test1 |
   | 基本信息     | 范围   | 使用对象名称作为筛选条件，明确生命周期规则适用的对象范围，请根据实际需求进行配置，例如配置为"所有文件"。 | 所有文件       |
   | 当前版本     | 状态   | 是否启用"当前版本"配置，需关闭。                                     | 关闭         |
   | 碎片过期规则设置 | 状态   | 是否启用"碎片过期规则设置"，需开启。                                   | 开启         |
   | 碎片过期规则设置 | 设置天数 | 受规则影响的碎片将过期并自动被OBS删除，请根据实际需求进行配置，例如配置为7天。             | 7天         |
      
   
4. 勾选确认信息，单击"确定"，完成生命周期规则配置。 若您需修改生命周期的内容，请单击该生命周期规则所在行右侧的"编辑"进行编辑；单击"禁用"，可以禁用该生命周期规则。单击"启用"，可启用该生命周期规则。
   
 
