先說結論吧:集群意外宕機重啟后異常,如果以前運行正常沒有配置錯誤的話,優先考慮重新cdh agent服務,很可能是它在作妖。
現象:服務器所在機房因意外斷電,等待了大半天后恢復。登錄CDH一看,發現集群重啟后出現了一堆服務狀態不良,HBase也沒法用了:



顯示狀態不良,Clock Offset,提示服務器時間不同步。
查看ntp的配置文件是否正確:vi /etc/ntp.conf,各節點都指向了master服務器IP,沒有發現問題:

接着執行ntpstat命令查看狀態,結果發現所有服務器的狀態都是未同步狀態“unsynchronised”:

百度了一下,猜測是因為ntp服務出問題導致的(如果時間不同步,會導致CDH集群上的各種服務運行都出現異常)。於是重啟ntp服務、手動時間同步、再重啟服務(全部機器執行):
systemctl stop ntpd
sudo ntpd -gq
systemctl start ntpd
之后再執行tinedatectl查看服務器時間狀態,發現NTP synchronized為true,說明時間同步成功了。並且各個節點與master之間的時間都保持一致了:

之后進到CDH管理后台,重啟服務,耐心等待服務重啟。然而datanode都恢復了,master依然有問題,提示ntp服務依然有問題:


這真是莫名其妙啊,無法找到主機的NTP服務,如果找不到服務,那為啥執行NTP服務停止、重啟等操作都不報錯呢?無意中在master上執行ntpstat查看狀態,居然提示無法與NTP daemon通訊:

打開master的ntp配置文件檢查,發現這兩行不知道為啥被注釋了,查了一下意味着不允許本地訪問。估計就是這個原因導致的。於是取消注釋、保存配置並重啟NTP服務。

運行ntpstat,master的狀態好了,但是進入CDH顯示問題依據。WTF???
重新百度到一篇帖子:https://blog.csdn.net/weixin_39445556/article/details/103455175,里面有說根本不是NTP的事,是CDH agent的問題。於是在每台機器上挨個執行systemctl restart cloudera-scm-agent,重啟cdh,過了一小會果然問題解決了。我也是無語了...

