Apache Ozone Java API读写文件时PERMISSION_DENIED问题排查
关于Ozone Java API权限异常的问题
我的Ozone连接配置
OzoneConfiguration ozoneConfiguration = new OzoneConfiguration(); ozoneConfiguration.addResource(new Path("/etc/hadoop/conf/ozone-site.xml")); ozoneConfiguration.set("ozone.om.address", "ofs://ozone:9862"); OzoneClient ozClient = OzoneClientFactory.getRpcClient(ozoneConfiguration); ObjectStore objectStore = ozClient.getObjectStore(); OzoneVolume ozoneVolume = objectStore.getVolume(VOLUME); OzoneBucket ozoneBucket = ozoneVolume.getBucket(BUCKET);
列表操作的异常表现
执行列表文件代码:
List<OzoneFileStatus> fileStatuses = ozoneBucket.listStatus(filesDirectory, false, filesDirectory, 10000);
- 当
filesDirectory为目录类型键(如"home",该目录下有user文件夹)时,操作正常 - 当
filesDirectory为包含文件的路径(如"home/user",该路径下存在file.parquet.snappy)时,收到权限错误:
PERMISSION_DENIED
org.apache.hadoop.ozone.om.exceptions.OMException: User user@QA.DF.OCP.COM READ permission to access key Volume: data Bucket:bucket Key: /home/user
创建操作的异常表现
在home目录创建新文件夹正常,但执行文件创建代码:
ozoneBucket.createKey(fileName, fileLen)
时收到权限错误:
PERMISSION_DENIED
org.apache.hadoop.ozone.om.exceptions.OMException: User user@QA.DF.OCP.COM doesn't have CREATE permission to access key Volume:data Bucket:bucket Key:file1.snappy.parquet
环境与已排查信息
- 使用的Ozone Client版本:hadoop-ozone-client 1.1.0
- 终端执行
hdfs dfs -ls ofs://ozone等操作完全正常,已通过Apache Ranger和终端-ls -R命令确认用户拥有所需的读写权限 - 问题仅出现在Java API调用场景,怀疑是OzoneClient的配置问题,是否需要修改ozone-site.xml中的属性?请问我哪里配置有误?
内容的提问来源于stack exchange,提问作者Jelly
相关产品推荐
相关产品推荐

