CDH环境下HDFS权限问题

CDH环境下Hadoop平台最高权限用户是hdfs,属于supergroup组。默认HDFS会开启权限认证,所以操作时,需要将root用户切换到hdfs用户,否则会报错。

在这里插入图片描述
问题

 org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/recsys2021":hdfs:supergroup:drwxr-xr-x
drwxr-xr-x   - hdfs supergroup          0 2021-07-07 17:05 /recsys2021

直接使用root用户创建目录也会有权限问题

hadoop fs -mkdir /ping
mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

解决

sudo -u hdfs hadoop fs -chown root /recsys2021
sudo -u hdfs hadoop fs -chmod 777 /recsys2021
hadoop fs -ls /
drwxrwxrwx   - root supergroup          0 2021-07-07 17:05 /recsys2021

这样每次操作都需要添加权限不太方便,如yarn在调度时,通常会生成一些临时文件,执行完毕会删除,如果权限不够会导致出错。Hive和HBase读写hdfs,也很容易因为权限问题导致出错。但是关闭权限检查,任何用户都可以操作HDFS数据,数据安全性又没有保障,所以使用将用户添加到supergroup组的方式。

设置
通常会把 root 或者需要的用户添加到 supergroup组,但Linux下默认是没有supergroup组。

# Linux下默认是没有supergroup组的
# hadoop:x:994:hdfs,mapred,yarn
cat /etc/group
 
# 查看hdfs用户的组是hadoop
# hdfs:x:995:992:Hadoop HDFS:/var/lib/hadoop-hdfs:/sbin/nologin
cat /etc/passwd

所以,先在Linux添加supergroup组,把root用户添加到supergroup里,再同步权限到HDFS。

# Linux添加supergroup组
# supergroup:x:1003:
groupadd supergroup
 
# 将root添加到supergroup
# supergroup:x:1003:root
usermod -a -G supergroup root
 
# 同步系统权限信息到HDFS,会自动同步其他节点权限
# Refresh user to groups mapping successful for cdh-master/192.168.100.45:8020
# Refresh user to groups mapping successful for cdh-slave01/192.168.100.46:8020
su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

验证

hadoop fs -mkdir /ping
hadoop fs -ls /
drwxr-xr-x   - root supergroup          0 2021-07-08 13:15 /ping
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
单项选择题 1. 下面哪个程序负责 HDFS 数据存储。   a)NameNode   b)Jobtracker   c)Datanode   d)secondaryNameNode   e)tasktracker 2. HDfS 中的 block 默认保存几份?   a)3 份   b)2 份   c)1 份   d)不确定 3. 下列哪个程序通常与 NameNode 在一个节点启动?   a)SecondaryNameNode   b)DataNode   c)TaskTracker   d)Jobtracker 4. Hadoop 作者   a)Martin Fowler   b)Kent Beck   c)Doug cutting 5. HDFS 默认 Block Size   a)32MB   b)64MB   c)128MB 6. 下列哪项通常是集群的最主要瓶颈   a)CPU   b)网络   c)磁盘   d)内存 7. 关于 SecondaryNameNode 哪项是正确的?   a)它是 NameNode 的热备   b)它对内存没有要求   c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间   d)SecondaryNameNode 应与 NameNode 部署到一个节点 多选题 8. 下列哪项可以作为集群的管理工具   a)Puppet   b)Pdsh   c)Cloudera Manager   d)d)Zookeeper 9. 配置机架感知的下面哪项正确   a)如果一个机架出问题,不会影响数据读写   b)写入数据的时候会写到不同机架的 DataNode 中   c)MapReduce 会根据机架获取离自己比较近的网络数据 10. Client 端上传文件的时候下列哪项正确   a)数据经过 NameNode 传递给 DataNode   b)Client 端将文件切分为 Block,依次上传   c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作 11. 下列哪个是 Hadoop 运行的模式   a)单机版   b)伪分布式   c)分布式 12. Cloudera 提供哪几种安装 CDH 的方法   a)Cloudera manager   b)Tar ball   c)Yum d)Rpm 判断题 13. Ganglia 不仅可以进行监控,也可以进行告警。( ) 14. Block Size 是不可以修改的。( ) 15. Nagios 不可以监控 Hadoop 集群,因为它不提供 Hadoop 支持。( ) 16. 如果 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。( ) 17. Cloudera CDH 是需要付费使用的。( ) 18. Hadoop 是 Java 开发的,所以 MapReduce 只支持 Java 语言编写。( ) 19. Hadoop 支持数据的随机读写。( ) 20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。( ) 21. NameNode 本地磁盘保存了 Block 的位置信息。( ) 22. DataNode 通过长连接与 NameNode 保持通信。( ) 23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。( ) 24. Slave 节点要存储数据,所以它的磁盘越大越好。( ) 25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。( ) 26. Hadoop 默认调度器策略为 FIFO( ) 27. 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。( ) 28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。( ) 29. 每个 map 槽就是一个线程。( ) 30. Mapreduce 的 input split 就是一个 block。( ) 31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。( ) 32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( ) 33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行"Hadoop namenode -format"操作格式化磁盘。( ) 别走开,答案在后

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值