更新时间:2024-11-29 GMT+08:00
Hadoop客户端删除OBS上数据时.Trash目录没有权限
用户问题
使用Hadoop客户端删除OBS上数据时出现.Trash目录没有权限的报错。
问题现象
执行hadoop fs -rm obs://<obs_path>出现如下报错:
exception [java.nio.file.AccessDeniedException: user/root/.Trash/Current/: getFileStatus on user/root/.Trash/Current/: status [403]
原因分析
hadoop删除文件时会将文件先移动到.Trash目录,若该目录没有权限则出现403报错。
处理步骤
方案一:
使用hadoop fs -rm -skipTrash来删除文件。
方案二:
在集群对应的委托中添加访问.Trash目录的权限。
- 在集群“概览”页签中,查询并记录集群所绑定的委托名称。
- 登录IAM服务控制台。
- 选择“权限 > 创建自定义策略”。
- 策略名称:请输入策略名称。
- 作用范围:请选择“全局级服务”。
- 策略配置方式:请选择“可视化视图”。
- 策略内容:
- “允许”选择“允许”。
- “云服务”选择“对象存储服务 (OBS)”。
- “操作”勾选所有操作权限。
- “特定资源”选择:
- “object”选择“通过资源路径指定”,并单击“添加资源路径”分别在“路径”中输入.Trash目录,例如obs_bucket_name/user/root/.Trash/*。
- “bucket”选择“通过资源路径指定”,并单击“添加资源路径”在“路径”中输入obs_bucket_name。
其中obs_bucket-name请使用实际的OBS桶名替换。
- (可选)请求条件,暂不添加。
图1 自定义策略
- 单击“确定”完成策略添加。
- 选择“委托”,并在1中查询到的委托所在行的“操作”列单击“权限配置”。
- 查询并勾选3中创建的策略。
- 单击“确定”完成委托权限配置。
- 重新执行hadoop fs -rm obs://<obs_path>命令。
父主题: 访问OBS