作者:破碎虚空圳
【引言】
我们偶尔进行关闭HBASE集群的时候,在$HBASE_HOME/bin/stop-hbase.sh执行后,会打印无数行......................................,有时候会执行2个小时,也无法关闭。执行jps后发现master和少部分regionserver依然在运行,什么原因会导致一个无限的等待呢?(注意,本文所指HBASE版本0.90 cdh3,不适用于其他版本)。下面让我们进行一个HBASE关闭集群的浅析,来揭开这个谜底。
【正文】
在HMaster.java的开头注释中,清晰的说明了关闭整个集群可以通过调用shutdown(),先通知所有的regionserver去关闭,然后等待所有的regionserver返回他们关闭的消息,最后Master关闭自身。
* <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In
* this case it will tell all regionservers to go down and then wait on them
* all reporting in that they are down. This master will then shut itself down.
下面从shutdown()开始分析:
@Override
public void shutdown() {
this.serverMan