解决CDH 访问权限问题
CDH 6.2 安装好以后,直接使用root 或者 其他账号执行spark-shell
会报权限错误
22/01/04 17:46:28 ERROR spark.SparkContext: Error initializing SparkContext.
org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:400)
...
因为CDH版的HDFS系统中,hdfs
用户才是超管,他所在的组在HDFS里是supergroup
而非linux下的 root 或者 其他用户。
解决办法:
## 创建hadoop用户,(由于已存在hadoop组,就直接-g 加入)
useradd -g hadoop hadoop
## 添加sudo权限,已经干了的话,这里就忽略
visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL ## 自主添加的一行
修改完毕 :wq!
## Linux 下创建超级用户组
groupadd supergroup
## 把hadoop用户加入supergroup组中
usermod -a -G supergroup hadoop
## 同步系统权限信息到HDFS,会自动同步其他节点权限
su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"