【问题标题】:Cannot create staging directory on HDFS in a folder that has permissions无法在具有权限的文件夹中的 HDFS 上创建暂存目录
【发布时间】:2019-12-10 01:31:00
【问题描述】:

HDFS 的根目录中有几个文件夹:

  • 目录1
    • 子目录1
      • 表1
      • 表2
    • 子目录2
  • 目录2
    • 子目录1
      • 表1
      • 表2
  • 目录3

它们都有子文件夹,其中包含使用 Hive 查询的不同 Parquet 文件。 即使权限在我看来没问题,我也无法加载其中一个子文件夹(例如 dir2 中的 table1),但在尝试加载它时出现 EXECUTE 错误。 代码在 Jupyter 笔记本中运行。 用户按组进行组织。

我已使用以下命令将相关目录的 rwx 权限添加到组:

hdfs dfs -setfacl -R -m group:user_group:rwx /dir2/subdir2

我得到的错误如下所示:

Cannot create staging directory 'hdfs://server:8020/dir2/subdir1/table1/.hive-staging_hive_2019-08-01_13-04-22': Permission denied: user=username, access=EXECUTE, inode="/dir2":hdfs:supergroup:drwxrwx---

我已将 dir2 的读取和执行权限添加到用户组,但错误仍然存​​在。从这个错误来看,我认为以某种方式应用了默认权限并且它们是 ---

所以,总结一下; 组对根目录具有读取和执行权限,对表目录具有读取、写入和执行权限,但对根目录的权限一直失败。

这是权限的外观:

# file: /dir2
# owner: hdfs
# group: supergroup
user::rwx
user:some_group1:r-x
group::---
group:some_group2:rwx
group:user_group:r-x
group:hive:rwx
group:some_group3:r-x
group:some_group4:r-x
mask::rwx
other::---
default:user::rwx
default:user:some_group1:r-x
default:group::---
default:group:some_group2:rwx
default:group:hive:rwx
default:group:some_group3:r-x
default:group:some_group4:r-x
default:mask::rwx
default:other::---


# file: /dir2/subdir1/table1
# owner: some_user
# group: supergroup
user::rwx
user:some_group1:r-x
group::---
group:some_group2:rwx
group:user_group:rwx
group:hive:rwx
group:some_group3:r-x
group:some_group4:rwx
mask::rwx
other::---
default:user::rwx
default:user:some_group1:r-x
default:group::---
default:group:some_group2:rwx
default:group:user_group:rwx
default:group:hive:rwx
default:group:some_group3:r-x
default:group:some_group4:rwx
default:mask::rwx
default:other::---

【问题讨论】:

  • 您可以试试hdfs dfs -getfacl -R /dir2 并检查权限吗?
  • 我已更新问题以包含权限现在的样子

标签: hadoop hive permissions hdfs cloudera


【解决方案1】:

最终通过创建替换旧目录的新目录解决了这个问题。新目录是使用正确的用户和凭据创建的。 例如,我创建了 subdir1_new,将数据移到那里,将 subdir1 重命名为 subdir1_old,并将 subdir1_new 重命名为 subdir1。受此问题影响的文件夹并不多,因此不需要很长时间。

我知道这不是实际的解决方案,但我无法弄清楚到底发生了什么,而这种解决方法起到了作用。

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多