无法写入hadoop dfs目录模式775组权限usergroupinformation

mfpqipee  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(426)

我正在启用文件系统权限的私有集群上运行hadoop2.6.2。集群只有hadoop这样的系统用户的密码文件,没有个人帐户。我正在从一个linux边缘节点访问dfs,这个节点有像我这样的个人帐户(“clott”)。
问题是我无法写入模式775和组hadoop的dfs目录('shared');边缘节点显示了hadoop组的一个成员。我以为边缘节点上的用户组成员身份会被使用,但不是吗?我看到的是:

clott@edge$ id
uid=1003(clott) gid=1003(clott) groups=1003(clott),27(sudo),1001(hadoop)

clott@edge$ hdfs dfs -ls /user/hadoop
Found 3 items
drwxr-xr-x   - hadoop hadoop          0 2015-12-03 16:55 /user/hadoop/DistributedShell
drwxrwxr-x   - hadoop hadoop          0 2015-12-22 09:25 /user/hadoop/shared

clott@edge$ hdfs dfs -mkdir /user/hadoop/shared/foo
mkdir: Permission denied: user=clott, access=WRITE, inode="/user/hadoop/shared":hadoop:hadoop:drwxrwxr-x

我检查了名称节点并在其日志中发现此警告:

2015-12-22 09:32:40,941 WARN org.apache.hadoop.security.UserGroupInformation: No groups available for user clott

这是有道理的-name节点不授予我访问权限,因为它不识别任何组。
那么name节点如何找到组成员身份呢?一些google似乎建议我必须将我的用户名和各种组添加到集群中,但这听起来不太对。当然,如果我将dfs目录模式设置为777,这是可行的,但这是不对的。
请帮忙,提前谢谢。

qv7cva1a

qv7cva1a1#

定义 hadoop.security.group.mapping (如本文所述)是:
用于acl的用户到组Map(获取给定用户的组)的类。默认实现org.apache.hadoop.security.jnibasedunixgroupsmappingwithfallback将确定java本机接口(jni)是否可用。如果jni可用,则实现将使用hadoop中的api为用户解析组列表。如果jni不可用,则使用shell实现shellbasedunixgroupsmapping。此实现使用bash-c groups命令将数据分发到linux/unix环境,以解析用户的组列表。
为了实现您的目标,您需要在namenode机器上添加您的用户帐户(clott),并将其添加到hadoop组中。
如果要对用户运行mapreduce,还需要在nodemanager主机上配置用户帐户。

相关问题