【问题标题】:hadoop permissions issue (hdfs-site.xml dfs.permissions.enabled)hadoop 权限问题(hdfs-site.xml dfs.permissions.enabled)
【发布时间】:2020-12-01 02:59:41
【问题描述】:
我最近在我的机器上安装了 Hadoop。我有权限问题。我以用户 rahul 登录并尝试在 HDFS(hdfs dfs -mkdir /rahul_workspace) 中创建一个目录。但它给了我一个错误Permission denied: user=Rahul, access=WRITE, inode="/user":hdfs:hdfs:drwxr-xr-x。快速谷歌搜索此错误导致许多响应建议通过将hdfs-site.xml 中的dfs.permissions 属性设置为false 来禁用权限检查的解决方法。
现在我可以在 HDFS 中创建目录。将上述属性设置为 false,我可以访问所有其他 hadoop 服务,例如 hive、pig、sqoop 等吗?
【问题讨论】:
标签:
hadoop
permissions
hive
hdfs
cloudera
【解决方案1】:
dfs.permissions 是可用于启用/禁用 HDFS ACL(简单权限)的属性。将 dfs.permission 设置为 false 后,任何用户都可以在 HDFS 的任何位置创建/删除文件/目录。
将此属性设置为 false,您可以访问所有其他 Hadoop 服务,例如 Hive、Pig 等。
【解决方案2】:
HDFS 将启动 namenode 进程的用户视为“超级用户”。此用户通常是 hdfs 用户。您尝试写入的/user 目录由hdfs 用户和hdfs 组拥有,对hdfs 组中的任何用户和其他用户具有读取和执行权限。
禁用权限似乎有点极端。您在这里有几个选项,第一个是将您的用户目录创建为hdfs 用户。
sudo -u hdfs hdfs fs -mkdir /rahul_workspace
sudo -u hdfs hdfs fs -chown Rahul /rahul_workspace
这将创建您的目录并将所有权更改为您。另一种选择是在您已经具有写入权限的区域中创建您的目录。通常 /tmp 是敞开的。
hdfs fs -mkdir /tmp/rahul_workspace
【解决方案3】:
在 Cloudera 上:
我所做的是,创建了一个对 Hue 具有默认权限的用户,即 user1
然后,从 linux shell,首先访问 hdfs 用户权限:
export HADOOP_USER_NAME=hdfs
然后为您的 linux 用户名,如“user1”:
尝试:
hdfs dfs -chown user1:user1 /
现在,如果您获得了适当的权限:
尝试在“/”上创建目录:
hdfs dfs -mkdir /testuser1
【解决方案4】:
我们用过
hadoop fs -setfacl -m -R user:xyz:rwx /data/dev/dl/fvc/df
在顶级目录(/data)上解决这个问题。