删除节点uuid后带来的问题

一、问题描述

  CDH5的测试环境,HBase的master一直爆红。

  不良 : Master 汇总: node8(可用性:未知,运行状况:良好). 该运行状况测试不良,因为 Service Monitor 未找到活动 Master。

  但奇怪的是Hbase的master是绿色的,也就表示master本身是正常运行的,而且通过hbase shell,查表插入数据也都正常。

  但爆红嘛,很不爽。搞不明白就求助百度呗,但感觉被好一顿坑。

二、第一步处理

  浏览了很多帖子,发现基本都是删除/var/lib/cloudera-scm-agent/cm_guid下的guid,然后重启agent。

  这里需要注意的是,这的确是一种解决大多数主机不良的方法。

  但这更适用于安装集群的时候,在节点存在大量数据的情况下,这么干的话,请做好迎接更大麻烦的准备。

  我还就这么干了。

  cdh5早点的版本,并没有/var/lib/cloudera-scm-agent/目录,而是在/(安装路径)/cm-<版本号>/lib/cloudera-scm-agent/下存在节点主机全局唯一ID的uuid。

  然后我就rm ./uuid,悲剧的开始。

  重启agent后:

    查看主机界面,node8节点连接正常。

    hbase爆红依然存在。

    但界面多了另一个告警,CM警告node8失联,进入告警却显示node8连接正常,刷新后告警依然存在。

  这很奇怪,相当奇怪。

  

  但查看数据库中的记录,就明白为什么了,在CM库的HOSTS表中记录了两条node8的uuid。显然,CM判断其中一条处于失联状态。

  删除节点uuid后带来的问题

 

 

   找到原因就好办了,删除在uuid文件中不存在的那一条呗。

  但在打算删的时候,我犹豫了。如果我将原来的uuid删除,这个新的uuid岂不是相当于一台新的节点?那原本的节点上安装的组件以及数据会怎样?

  这一点只是猜测,我并没有去查证资料或者去测试,如有实际验证的大佬请指点。如果之后找时间进行验证会更新。

三、第二步处理

 

  虽然是测试环境,数据依然重要。我保守的选择保留旧有ID,即HOSTS表记录的uuid写回/cm-<版本号>/lib/cloudera-scm-agent/uuid中。

  先关掉master节点的cloudera-scm-server和node8节点的cloudera-scm-agent。

  修改uuid文件的内容,使用vim编辑器,或者echo,为了避免多出一些不该存在的空格换行啥的,建议使用 echo -n "XXX-XXX-XXX-X" >uuid

   然后删除HOSTS表中记录的那条你不需要的uuid。

   重启server和agent。

  恭喜,问题并没有解决!!!!

  然后你会发现,HOSTS表中记录了两条一模一样的uuid,而且对应主机都是node8节点。啊,真是太好了呢,双胞胎唉。

  我突然意识到一个问题,此时无论我是修改数据库的uuid还是修改uuid文件中的uuid,都已经无法使原本的uuid和node8这台节点对应起来了。

  显然是因为我先前的rm uuid操作和重启agent,使某些东西发生了变动。

  然后我就对比这新生的两胞胎。果然,就算外表一样,内里还是不同的。CLUSTER_ID不同,然后我就思考,我也许可以去更改这个ID。

  删除节点uuid后带来的问题

 

 

 四、第三步处理

  有了思路,事情就简单了。但是HDFS的cluster ID在哪记着我倒是知道,但agent记在哪里呢?我翻遍了‘/cm-<版本号>/*’下的文件,没找到。度娘也间歇性抽风。

  我不得不再次依靠自己,最终我把目标锁定在与uuid同文件夹下的response.avro文件。

     vim打开一看……,好,就它了。

   删除节点uuid后带来的问题

 

 

    显而易见,我不想给它进行反序列化。那咋办,取巧呗。从其他节点上拷贝过来不就行了!!!我真是个天才(即否)!

  果然事情很顺利。

  一切又回到了最初的样子:hbase爆红!!!

  在做无用功这块,我就没输过谁!

  ……

五、言归正传

  万万没想到,我最后还是找到了这次hbase爆红……慢着,你以为是原因吗?并不是,而是病友,逛cloudera社区逛出来六年前的病友……一个悬而未决的帖子,疑是CM监控问题而非hbase问题。也许现今庞大的网络中的某处存在着它的解决方法以及原因剖析,但暂时我是没兴趣了。或者有请隐藏大佬发言。

  

  

  

 

上一篇:ubuntu20.04磁盘扩容


下一篇:十八、clickhouse的UUID函数