HBase bug:重启机群后不能正常工作

现象:

hbase机群重启后不能正常工作,通过web接口访问时,500Exception的样子。hbasehbck显示很多region没有被服务。

重现过程:

某些情况下下,比如系统压力比较大,或者master意外kill掉了,master会被快速重启。

这个时候regionserver是正常的,regionserver会通过zookeeper感知这个事件,并将master切换到新的服务进程上。

但是regionserver没有做其他的清理工作,这会导致regionserver依然对hbase的journallog(/hbase/.logs/<FQHN>)文件保持写入权限。

而master启动后第一件事就是重放journal,而且很诡异的他选择用append方式打开已有的journallog,这个是hdfs不允许的,于是master不停的尝试append,有不停的失败重试。

于是系统陷入死锁,master在等待重放rs,而rs在等待master发送loadregion的指令。

深层次的原因还在看代码。jira上还没搜索到相关的bug。这两天集中搞定这个问题。

相关推荐