1. 程式人生 > >CDH許可權不夠,修改使用者和使用者組為root

CDH許可權不夠,修改使用者和使用者組為root

    不知道大家有木有遇到過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 secureMain
java.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