前言:cdp集群装了Kerberos认证,在进行权限集成时集群所有组件高可用状态失效,yarn组件ResourceManager停止
查看ResourceManager组件日志,报错如下:
Error starting ResourceManager
org.apache.hadoop.service.ServiceStateException: org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /rmstore/ZKRMStateRoot
初步分析,怀疑可能和zookeeper有关
查看zookeeper组件状态,三个节点一切正常
查看zookeeper日志,所有节点日志统一输出
Submitting global closeSession request for session 0x10005e3ff990515
这看着肯定有问题,估计是权限啥的
问问万能的chatgpt,怎么回答的:
ResourceManager 在启动过程中遇到了 Zookeeper 认证权限的问题。具体来说,出现了 “NoAuthException: KeeperErrorCode = NoAuth for /rmstore/ZKRMStateRoot”。
关于zookeeper上面的报错,我把连接指定ip了
[zk: localhost:2181(CONNECTED) 9] getAcl /
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 10] setAcl / ip:172.21.32.231:cdrwa,ip:172.21.33.158:cdrwa,ip:172.21.35.239:cdrwa
[zk: localhost:2181(CONNECTED) 11] getAcl /
Authentication is not valid : /
改完后,重启zk,就没出那个日志了
但是RM这边的问题还没解决,这边去官网上又看了一下,说是有两种解决方案
官网连接:Known Issues in MapReduce, Apache Hadoop YARN, and YARN Queue Manager
说是因为更改了 Kerberos 主体名称,导致YARN 无法启动
1.删除 znode 并重新启动 YARN 服务。
2.使用命令。这也将下面的 znode 设置为安全性较低的节点。reset ZK ACLs/rmstore/ZKRMStateRoot world:anyone:cdrwa
我又去zk上面看看打算把znode节点删除试试,结果又出幺蛾子了
zookeeper要我权限认证,现在连最基本的ls都看不了了
可能跟我上面的操作有关系
现在人有点麻
找到问题了,之前设置的是指定三台节点登录才行
所以本地进入也无法访问,指定ip登录
[root@cloudcdp01 bin]# ./zkCli.sh -server 172.21.32.231:2181
Connecting to 172.21.32.231:2181
Welcome to ZooKeeper!
JLine support is enabledWATCHER::WatchedEvent state:SyncConnected type:None path:null
[zk: 172.21.32.231:2181(CONNECTED) 0] ls /
[confstore, hadoop-ha, hbase, hiveserver2, kafka, rmstore, yarn-leader-election, zookeeper]
[zk: 172.21.32.231:2181(CONNECTED) 1]
要想取消也简单,在重新设置一下就好
setAcl / world:anyone:cdrwa
查看权限
[zk: localhost:2181(CONNECTED) 3] getAcl /
'world,'anyone
: r
关于前面那个ResourceManager日志问题,我找到办法了
就是去zookeeper节点上,把这个/rmstore/ZKRMStateRoot目录文件的权限打开就行了
但是又出现了一个问题
[zk: localhost:2181(CONNECTED) 0] ls /
[confstore, hadoop-ha, hbase, hiveserver2, kafka, rmstore, yarn-leader-election, zookeeper]
[zk: localhost:2181(CONNECTED) 1] setAcl /rmstore/ZKRMStateRoot world:anyone:cdrwa
Authentication is not valid : /rmstore/ZKRMStateRoot
[zk: localhost:2181(CONNECTED) 2]
对这个目录没有权限操作,又去找资料
官网上找到一篇,对于这种情况,使用增加超级管理员的方式,然后用超级管理员进行目录权限的修改。
Zookeeper - Super User Authentication and Authorization
如果按照上面的操作可以的话,弄完直接重启集群就会好了
里面一堆操作,应该可行,我目前还没试,在找找有没有更好的办法,有的话再分享。
这个Acl权限问题折磨了我好几天,今天终于找到了
配什么超级管理员,麻烦的要死,之前找了一堆文章,什么加认证啥的,反正是没成功过。
有直接修改zoo.cfg的我没成功。
直接去zookeeper配置里找Server高级配置代码段(安全阈),在文本框里加这个
skipACL=yes
直接禁用,然后重启就好了。
果然高端的食材仅仅只需要简单的烹饪方式。