linux下root操作hdfs文件系统出现permission denied 的错误

 

问题背景

是在登录 hdfs 的WEB 页面时, 显示的文件夹user 的所有者是hdfs, 那么 root算什么??

首先明确 hdfs (文件系统) 与Linux的文件系统是平级的。 因此在这两个不同的文件系统,用户的定义也不同

如标题:在 HDFS 中 用户 hdfs 是superuser (超级用户)

对应的, 在linux 中, 用户 root 是superuser(超级用户)

然而,在安装hadoop时, 这些hdfs 的用户是同步到Linux中, 很可惜,不能像普通用户那, 登录。

 

下图为Linux centos 7.5  中查看用户组 hadoop里的用户, 有 hdfs,mapred等。

[root@h1 cloudera-scm-server]# head -50 /etc/group | grep hadoop
hadoop:x:993:hdfs,mapred,yarn

下图为 当操作文件夹 (根目录)/user时,使用yarn 用户,权限不够,因为 hdfs 是他的拥有者 且是superuser. yarn和hdfs 在同一组,但权限不同。

[root@h1 cloudera-scm-server]# su - yarn -s /bin/bash -c "hadoop fs -mkdir /user/root"
mkdir: Permission denied: user=yarn, access=WRITE, inode="/user":hdfs:supergroup:drwxrwxr-x
[root@h1 cloudera-scm-server]# su - hdfs -s /bin/bash -c "hadoop fs -mkdir /user/root"
[root@h1 cloudera-scm-server]# 

前面说了, hdfs的用户 同步到linux中,但不等登录。因此上图就是操作方法。

 

可以修改hdfs 文件系统的某个文件夹的owner 为root, 然后再在linux 的root用户操作就不会那么复杂了。

如下

[root@h1 cloudera-scm-server]# sudo -u hdfs hadoop fs -chown root /user/root
[root@h1 cloudera-scm-server]# 

[root@h1 cloudera-scm-server]# hadoop fs -mkdir /user/root/one
[root@h1 cloudera-scm-server]# 

结果

下图的结果证明了,

第一:上一步的修改owner成功,现在root 可以修改这个文件夹了,

第二,命令单独是 hadoop fs  操作是,hdfs 识别的是当前linux 登录用户作为访问者, 所以创建的文件夹“one” 的所有者就是 root

 

参考链接如下,有更加详细的截图说明

https://samuel92.blog.csdn.net/article/details/72902112?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328602.57146.16151795075776291&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值