1. 部署前提

确保版本符合以下需求:

  • HDFS:hadoop-2.9.2-1.2.0及以上
  • 数据地图:v1.2.4及以上

2. 部署步骤

以下步骤均以EasyOps部署环境为例。

2.1 预置操作

1. HDFS目录预置

# 登录已部署HDFS Client节点的机器
# 使用超级管理员keytab进行认证,不同集群对应的keytab路径不相同,请参考实际环境修改
 kinit -kt /home/bdms/hdfs/default_hdfs/client/2021091511134684753a2b049/keytab/hdfs.keytab hdfs/hadoop5438.jd.163.org@BDMS.163.COM

# 手工创建公共回收站目录
# easyops环境执行命令前需要先执行source操作
cd /home/bdms/hdfs/default_hdfs/client/2021091511134684753a2b049
source config/hadoop-env.sh
# 确认目录是否存在,不存在则手工创建
bin/hdfs dfs -ls /user/hdfs/.Trash  
bin/hdfs dfs -mkdir -p /user/hdfs/.Trash

# 执行授权操作
bin/hdfs dfs -chown 755 /user/hdfs
bin/hdfs dfs -chown 755 /user/hdfs/.Trash

2. Ranger权限预置

1.增加public分组授权:将/user/hdfs/.Trash/user/hdfs/.Trash/Currentrwx权限(非递归)授权给public分组,如下图所示 公共回收站开启方法 - 图1 公共回收站开启方法 - 图2

2.猛犸平台个人及项目账号授权:/user/hdfs/.Trash/Current/${username}授权给对应用户rwx权限(递归) 此步骤以由猛犸自动完成,执行check即可

3.其他公共账号授权: EasyOps部署环境包含hivesparkyarnimpalaslothhbasemammutmapredranger用户 需要将/user/hdfs/.Trash/Current/${username}授权给对应用户rwx权限(递归),以spark用户为例,手工Add New Policy 公共回收站开启方法 - 图3

注意:若出现用户不存在,则需要在RangerAdmin中手工添加用户,以添加yarn用户为例,如下所示 公共回收站开启方法 - 图4 公共回收站开启方法 - 图5

2.2. HDFS NameNode配置变更

1.开启回收站功能开关

通过EasyOps修改:hdfs-site.xml中增加或修改如下配置项,变更完成后更新并启用配置组。

<property>
  <name>dfs.namenode.recycle.bin.enabled</name>
  <value>true</value>
</property>

如下图所示: 公共回收站开启方法 - 图6

2.增加Trash清理日志配置

log4j.logger.DELETE=INFO,DELETE
log4j.logger.DELETE.log.file=delete-${hadoop.log.file}
log4j.logger.DELETE.log.maxfilesize=2560MB
log4j.logger.DELETE.log.maxbackupindex=50
log4j.appender.DELETE=org.apache.log4j.RollingFileAppender
log4j.appender.DELETE.File=${hadoop.log.dir}/${log4j.logger.DELETE.log.file}
log4j.appender.DELETE.layout=org.apache.log4j.PatternLayout
log4j.appender.DELETE.layout.ConversionPattern=%d{ISO8601} : %m%n
log4j.appender.DELETE.MaxFileSize=${log4j.logger.DELETE.log.maxfilesize}
log4j.appender.DELETE.MaxBackupIndex=${log4j.logger.DELETE.log.maxbackupindex}

注意:仅当EasyOps版本为1.8.2以上时,才可以通过页面修改log4j配置,其他版本只能登录机器手工修改配置文件,存在配置被刷掉风险。该配置项不影响回收站整体功能,外部环境可选择性配置。

3.调整回收站清理频率

确认是否已配置以下配置项,建议按照以下参数进行调整

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>

<property>
  <name>fs.trash.checkpoint.interval</name>
  <value>30</value>
</property>

2.3 数据地图配置变更

1.数据地图配置修改配置文件

修改EasyDmap服务backend组件的配置文件,示例:

/home/bdms/easy_dmap/default_easy_dmap/backend/202109151113468562954cd23/config/frontConfig.json 
"menu": { 
      "guide": 1, 
      "home": 1, 
      "trash": 0 
    },

修改trash=1 表示页面展示回收站入口。

2.修改数据库dm_proxy_keytab.principal字段类型为 text,避免加密后字段长度

访问EasyDmap服务的数据库,执行下面的语句:

alter table dm_proxy_keytab modify column keytab text;

3.预置Keytab

EasyDmap服务backend组件所在的机器,执行以下命令,预置Keytab:


//查看principal信息
klist -kt /etc/security/keytabs/hive/hive.service.keytab
//执行keytab预置,确保principal信息正确
curl -X PUT 'http://127.0.0.1:7066/api/system/proxykeytab/add?principal=hive/hadoop5438.jd.163.org@BDMS.163.COM&keytabPath=/etc/security/keytabs/hive/hive.service.keytab'

2.4 HDFS NameNode服务重启

  1. 通过EasyOps重启Standby NameNode并同步配置,通过NameNode webUI页面确认启动是否已完成
  2. 待原Standby NameNode退出safemode后,再重启Active NameNode

2.5 数据地图服务重启

通过EasyOps重启数据地图服务,注意:不要同步配置

3 风险应对

Ranger预置操作中,需要对非猛犸平台管控的用户手工授权,在部分环境(特别是接管环境、非标EasyOps部署环境)可能存在除hivesparkyarnimpalasloth外其他用户的情况

  1. 建议先执行hdfs dfs -ls /user目录排查梳理,必要时可要求内部运维、底层开发同学协助。
  2. 客户现场出现删除进入公共回收站失败场景时,手工在RangerAdmin中将/user/hdfs/.Trash/Current/${username}rwx权限授权给对应用户即可。

4 验证方案

  1. 删除数据:登录猛犸平台——>文件管理——>个人文件,删除目录或文件 公共回收站开启方法 - 图7

  2. 检查是否正常回收:进入数据地图——>回收站——>个人回收站,确认Current_delete目录是否存在,目录中数据是否一致 公共回收站开启方法 - 图8

  3. 恢复已删除的数据:在回收站目录中执行恢复操作 公共回收站开启方法 - 图9 公共回收站开启方法 - 图10

  4. 验证数据恢复:再次进入文件管理——>个人文件,验证数据恢复是否正常 公共回收站开启方法 - 图11