HBase启动后HMaster挂掉的一种解决方案

最近在使用HBase的时候,发现使用HBase shell的list命令时出错,jps查看了一下进程,发现HMaster挂掉了,在确认Hadoop状态正常后,查看HMaster的日志,发现报错如下:

2015-02-17 05:46:15,212 DEBUG [master:master:60000] lock.ZKInterProcessLockBase: Released /hbase/table-lock/hbase:namespace/write-master:600000000000004
2015-02-17 05:46:15,212 FATAL [master:master:60000] master.HMaster: Master server abort: loaded coprocessors are: []
2015-02-17 05:46:15,213 FATAL [master:master:60000] master.HMaster: Unhandled exception. Starting shutdown.
        org.apache.hadoop.hbase.TableExistsException: hbase:namespace
        at org.apache.hadoop.hbase.master.handler.CreateTableHandler.prepare(CreateTableHandler.java:120)
        at org.apache.hadoop.hbase.master.TableNamespaceManager.createNamespaceTable(TableNamespaceManager.java:232)
        at org.apache.hadoop.hbase.master.TableNamespaceManager.start(TableNamespaceManager.java:86)
        at org.apache.hadoop.hbase.master.HMaster.initNamespace(HMaster.java:1049)
        at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:913)
        at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:606)
        at java.lang.Thread.run(Unknown Source)
2015-02-17 05:46:15,214 INFO  [master:master:60000] master.HMaster: Aborting
2015-02-17 05:46:15,214 INFO  [master,60000,1424180766819-BalancerChore] balancer.BalancerChore: master,60000,1424180766819-BalancerChore exiting
2015-02-17 05:46:15,215 INFO  [master,60000,1424180766819-ClusterStatusChore] balancer.ClusterStatusChore: master,60000,1424180766819-ClusterStatusChore exiting
2015-02-17 05:46:15,215 INFO  [CatalogJanitor-master:60000] master.CatalogJanitor: CatalogJanitor-master:60000 exiting
2015-02-17 05:46:15,216 DEBUG [master:master:60000] master.HMaster: Stopping service threads

出现两个FATAL(第2、3行),严重错误,直觉上感觉跟Zookeeper有关,尝试了多种方法后,终于找出了正确解决方案,此方案来自Stack Overflow上的polaris大神(原文网址附在最后,有兴趣的可以看一下)。

4个步骤解决问题:

    1、停止HBase集群;

    2、使用HBase的离线修复命令      

hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair

    3、删除Zookeeper中已存在的HBase的旧的信息

         进入zookeeper客户端,注意,要在zookeeper集群启动情况下进入客户端:

./opt/zookeeper/bin/zkCli.sh

        使用 ls / 查看zookeeper中的数据目录

        使用 rm /hbase 删除zookeeper中的hbase数据

    4、重启HBase集群,集群恢复正常。


思考:

    解决这个问题后,一直在反思集群为什么会突然出现这种情况,后来终于搞明白。之前对集群测试时,在主节点上部署了一个zookeeper节点(主节点之前没有部署zookeeper),后来为防止zookeeper节点总数变成偶数,又把这个zookeeper节点删掉了。可能是这个原因造成zookeeper中已存在的hbase数据有问题,所以清空zookeeper中的hbase数据,就能解决问题了。


原文网址:http://stackoverflow.com/questions/28563167/hbase-master-not-starting-correctly

转载于:https://my.oschina.net/u/1412751/blog/410943

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值