某天凌晨四点左右,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,从而恢复正常。