作者:破碎虚空圳
【引言】
我们偶尔进行关闭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.serverManager.shutdownCluster();
try {
this.clusterStatusTracker.se

本文针对HBASE版本0.90 cdh3,探讨了在执行$HBASE_HOME/bin/stop-hbase.sh后,为何有时会出现长时间无法关闭集群的问题。作者分析了HMaster的shutdown()过程,指出RegionServerTracker在Zookeeper的监控角色,以及RegionServer关闭受阻的可能原因,如Zookeeper中RS节点未删除、无法发送心跳等。解决方法是检查Zookeeper的/hbase/rs目录和对应RegionServer日志。
最低0.47元/天 解锁文章
2342

被折叠的 条评论
为什么被折叠?



