大數(shù)據(jù)語運(yùn)維實(shí)戰(zhàn):hive鎖泄露導(dǎo)致的zookeeper異常
問題描述:
突然收到生產(chǎn)集群告警HDFS服務(wù)兩個Failover Controller服務(wù),備節(jié)點(diǎn)RM服務(wù),以及集群中的zookeeper服務(wù)全部出現(xiàn)異常告警。已提交任務(wù)出現(xiàn)大量失敗。
問題排查:
查看cm控制臺,果然發(fā)現(xiàn)告警的幾個服務(wù)都出現(xiàn)紅色告警標(biāo)志,因?yàn)槌霈F(xiàn)問題的服務(wù)貌似都和zk服務(wù)有關(guān)聯(lián),于是先排查zk服務(wù)異常的原因。
觀察zk的幾個核心監(jiān)控指標(biāo),最明顯的發(fā)現(xiàn)角色的cpu突然飆高,cm的Canary 持續(xù)時間從平時的幾秒直接飆升到二十幾秒。同時我們觀察到一個核心指標(biāo)項,zk服務(wù)的數(shù)據(jù)大小也是直線飆升。同時zk服務(wù)節(jié)點(diǎn)出現(xiàn)GC。




結(jié)合以上信息,因?yàn)槭蔷€上服務(wù),影響面積較大,想著要先恢復(fù)服務(wù),于是重啟了整個zk集群,但是?。。?/span>Zk服務(wù)并沒有成功啟動。并且現(xiàn)象還是zk服務(wù)GC。于是想到應(yīng)該有大量的請求在訪問zk服務(wù),到導(dǎo)致zk服務(wù)負(fù)載過高,觸發(fā)了GC。
分析zk快照文件:
提示:關(guān)于zk快照文件等知識需要大家另行補(bǔ)充?。?!下面只列出操作步驟。
通過zk自帶的工具類格式化快照文件:
匯總znode并排序:
發(fā)現(xiàn)大量的znode集中在hive_zookeeper_namespace_hive。立馬想到應(yīng)該和集群中任務(wù)有關(guān),因?yàn)檫@里hive_zookeeper_namespace_hive主要是hive的鎖在zk的?持久節(jié)點(diǎn)。

查看hive_zookeeper_namespace_hive節(jié)點(diǎn)詳情:

但是查看集群整體的任務(wù)量,發(fā)現(xiàn)并沒有激增,不是很理解為什么會導(dǎo)致znode節(jié)點(diǎn)的激增。
于是乎請教了google,然后出現(xiàn)了以下結(jié)論;

出問題去官網(wǎng)查看jiar哈:https://issues.apache.org/jira/browse/HIVE-15997

故障恢復(fù):
? 知道了問題的原因,于是先臨時停止hiveserver2服務(wù),阻止新任務(wù)的提交,降低zk的負(fù)載,zk這邊也加大了jvm的堆內(nèi)存,然后再重啟整個zk服務(wù)。Zk服務(wù)正常運(yùn)行。然后重啟rm和hdfs服務(wù)也都恢復(fù)正常。