如何解决Cloudera Manager主机页面出现重复主机异常

问题重现

 

通过Cloudera Manager主页访问“主机”页面,发现其中一台主机有2条重复的记录,一条有角色相关信息但是心跳明显超时很久了,另外一台有心跳但是没有主机角色信息,而且所有主机都是未知状态,如下:

 

回到Cloudera Manager主页也发现无论是Cloudera Management Service还是集群的Hadoop服务都是未知状态。

 

 

重启Cloudera Management Service显示失败:

 

 

  • 测试环境

1.CDH6.1

2.Redhat7.4

3.采用root进行操作

 

2

问题解决

 

1.首先我们登录MySQL,并查看Cloudera Manager数据库的HOSTS表进行核对。

 

mysql -u root -p
use cm;
SELECT HOST_ID,NAME,IP_ADDRESS,HOST_IDENTIFIER FROM HOSTS;

 

Fayson的集群一共4台机器,发现确实有5台主机,并且IP为172.31.6.83有两台机器:

 

 

2.查看Cloudera Manager数据库的ROLES_AUD即角色表确认172.31.6.83有角色的HOST_ID。

 

MariaDB [cm]> select * from ROLES_AUD order by HOST_ID;

 

 

对应第1步的HOSTS表的数据,发现并没有HOST_ID为5的数据,所以我们主要需要处理HOST_ID为5同时IP也为172.31.6.83的数据。

 

3.从第1步的HOSTS表的数据记录重复的172.31.6.83主机的HOST_IDENTIFIER值。

 

MariaDB [cm]> SELECT HOST_ID,NAME,IP_ADDRESS,HOST_IDENTIFIER FROM HOSTS where IP_ADDRESS='172.31.6.83';

 

 

HOST_ID为1的HOST_IDENTIFIER值为5b72bbe2-b332-4aff-959d-6f705205365b

HOST_ID为5的HOST_IDENTIFIER值为2ac39f58-b166-4cd7-8b72-b718398ec02a

 

4.查看172.31.6.83主机的Cloudera Agent的真实UUID。

[root@ip-172-31-6-83 ~]# cd /var/lib/cloudera-scm-agent
[root@ip-172-31-6-83 cloudera-scm-agent]# cat uuid
[root@ip-172-31-6-83 cloudera-scm-agent]#

 

 

确认真实的Agent uuid与第4步中的HOST_ID为5的HOST_IDENTIFIER值一致,接下来我们开始进行处理。

 

5.首先停止172.31.6.83主机的Agent服务。

 

[root@ip-172-31-6-83 ~]# systemctl stop cloudera-scm-agent
[root@ip-172-31-6-83 ~]# systemctl status cloudera-scm-agent

 

 

6.从Cloudera Manager的“主机”页面删除没有角色的172.31.6.83主机,根据前面第2步其实我们也能判定删除的是HOST_ID为5的那条信息。

 

 

 

删除成功:

 

 

7.停止Cloudera Manager Server的服务

 

[root@ip-172-31-6-83 ~]# systemctl stop cloudera-scm-server  
[root@ip-172-31-6-83 ~]# systemctl status cloudera-scm-server

 

 

8.使用MySQL自带的命令备份CM数据库,mysqldump,这里省略,不清楚的可以自己百度。

9.将172.31.6.83主机的Agent UUID的文件中的值改为第3步骤中HOST_ID为1的HOST_IDENTIFIER值,即5b72bbe2-b332-4aff-959d-6f705205365b

 

[root@ip-172-31-6-83 ~]# cd /var/lib/cloudera-scm-agent
[root@ip-172-31-6-83 cloudera-scm-agent]# echo -n "5b72bbe2-b332-4aff-959d-6f705205365b" > uuid
[root@ip-172-31-6-83 cloudera-scm-agent]#

 

 

10.重启172.31.6.83主机上的Cloudera Manager Server以及Agent服务

 

[root@ip-172-31-6-83 ~]# systemctl start cloudera-scm-server
[root@ip-172-31-6-83 ~]# systemctl start cloudera-scm-agent

 

 

11.回到Cloudera Manager主页重启CMS服务

 

 

启动成功

 

 

12.重启集群所有服务

 

 

重启后,整个集群恢复正常:

 

 

3

总结

 

1.当集群的某台主机你更新了OS,或硬件配置或者进行了CDH升级,或者你手动操作修改了Agent的UUID文件都可能导致Cloudera Manager的主机页面有重复的主机显示。

 

2.一旦有重复主机显示,该主机其实严格意义上不属于集群的一部分了,没办法使用Cloudera Manager来管理这台主机比如重启这台机器上的相关服务。

 

3.Fayson本次测试模拟的有重复显示的主机刚好是CMS服务所在的主机,所以直接导致整个集群的状态不可监控,重启CMS服务也直接失败,如果是某台DataNode出现重复,不会出现这么恶劣的情况。

 

4.本文提供的修改Agent的UUID文件是其中的一种办法,你也可以直接修改MySQL数据库来实现,目的就是MySQL中保存的数据需要与Agent本地的UUID文件匹配。

 

5.注意修改Agent的uuid文件务必使用echo -n命令。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值