CDH权限不够,修改用户和用户组为root

来源:互联网 发布:知乎悟空反作弊系统 编辑:程序博客网 时间:2024/06/02 21:33

    不知道大家有木有遇到过CDH中使用默认的用户和用户组导致有些地方的文件权限操作和用户操作的各种问题。CDH默认安装的时候,会创建各种用户,hdfs,hive,spark,impala,sqoop等等的用户,但往往我们在做一些操作的时候往往权限不够,导致各种各样的问题,如:只能使用hdfs用户执行job,只能使用hdfs用户下使用hive,JobHistory Server的日志在监控WEB界面不能看历史job日志jobHistory,只能通过每次手动权限赋值【hadoop fs -chmod -R 777 /user/history/done_intermediate/hdfs】查看,很是麻烦,还有等等其他的问题。

    小弟我是深有感触啊,曾被这个多用户权限问题搞得不知所措,可能是自己不了解其架构和原理。还因此重装过CDH的,在此写篇文章,谨记走过的弯路。等以后CDH熟练了可以去研究其中的原理架构奥义。

 

建议对CDH使用不熟的,把权限和用户以及用户组全部改成root,统一都是最高权限。

 

建议先修改hdfs,然后重启hdfs成功,再改Yarn,然后重启Yarn成功。剩下的hadoop生态圈可以先全部修改完毕后再重启

找到对应框架,搜索”用户“以及“系统组”:均改为root

 

1先修改hdfs,因为这是hadoop集群的基石,后面很多操作都是使用的hdfs:

如下图:搜索”用户“以及“系统组”:均改为root




1月 19, 上午9点13:17.763          FATAL          org.apache.hadoop.hdfs.server.datanode.DataNode         Exception in secureMainjava.io.IOException: the path component: '/var/run/hdfs-sockets' is owned by a user who is not root and not you.  Your effective user id is 0; the path is owned by user id 494, and its permissions are 0755.  Please fix this or select a different socket path.            at org.apache.hadoop.net.unix.DomainSocket.validateSocketPathSecurity0(Native Method)            at org.apache.hadoop.net.unix.DomainSocket.bindAndListen(DomainSocket.java:189)            at org.apache.hadoop.hdfs.net.DomainPeerServer.<init>(DomainPeerServer.java:40)            at org.apache.hadoop.hdfs.server.datanode.DataNode.getDomainPeerServer(DataNode.java:970)            at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:936)            at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1144)            at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:453)            at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2402)            at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2289)            at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2336)            at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2513)            at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2537) 


解决方案:

修改套接字路径的用户和用户组

chown -R root:root /var/run/hdfs-sockets

 

一般好多的错误都是该文件已经被创建了,需要修改该文件目录的访问权限,仔细看。

 

2再修改Yarn

搜索”用户“以及“系统组”:均改为root

 

报错:Caused by:org.apache.hadoop.security.AccessControlException:Permissiondenied:user=root,access=READ_EXECUT,inode="/done":mapred:hadoop drwxrwx---
报此错误,同样就是用户权限的问题。一定一个一个修改完毕。

解决方案:搜索“mapred”和“hadoop”修改为root

 

 

3最后修改ZooKeeper,Hive,Impala,Hbase,Spark,Sqoop2,Flume,Kafka等的用户和系统组为root。

4重启完成OK。

 

关于CDH的用户权限等,在Cloudera上专门有一大章节讲安全体系的,看这个好,只恨自己的英语差。

官网:

http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/security.html

0 0
原创粉丝点击