某天凌晨四點左右,HBase RegionServer 宕機自動拉起,查看日誌發現是HDFS 在進行HA切換,15次重試仍連不上可寫的active,於是掛了。所以根本問題是hdfs。
日誌定位
通過日誌定位,發現JournalNode一直在拋錯,幾乎打滿了日誌:
該鏈接CDH專家表示 ([Solved] hdfs journalnode fail, can not start ) ,很可能是JN(JournalNode)文件損壞或HDFS升級後文件版本不一致,在我們這邊升級這種原因可以排除。
隨後我們又在JN的out重定向中發現了磁盤空間不足錯誤:
分析
根據現有的日誌,我們猜測,可能是4點HDFS切換主從時,此臺機器的JN寫edit_log過程中磁盤爆了,然後JN進程 OOM退出,導致edit_log不完整,處於corrupted狀態。我們的集羣是3 JournalNode,另外兩臺日誌看起來正常。
解決辦法
將故障機的JN停機,對應目錄下的edit_inprogress_*全部move走,再單獨啓動那臺機的JN。它會自動從其他JN同步edit_log,從而恢復正常。