hbase启动时 : zookeeper 挂掉和 hmaster挂掉的问题

A: zookeeper 挂掉

ERROR [main] zookeeper.ZooKeeperWatcher:hconnection-0x6e1721d7, quorum=hadoop-senior01.ibeifeng.com:2181,baseZNode=/hbase Received unexpected KeeperException, re-throwing exception

场景:Hbase 运行shell脚本的   list 时  ,Hmaster ,HRegionserver 老是挂

原因分析: zookeepeer挂掉

解决方法:重启zookeeper

 

引出问题 1: zookeeper 启动正常是显示 started,但是 查询状态是 Error contacting service. Itis probably not running.

[kequan@hadoop-senior01 zookeeper-3.4.5-cdh5.3.6]$ bin/zkServer.sh start

JMX enabled by default

Using config: /opt/cdh/zookeeper-3.4.5-cdh5.3.6/bin/../conf/zoo.cfg

Starting zookeeper ... already running as process 3942.

[kequan@hadoop-senior01 zookeeper-3.4.5-cdh5.3.6]$ bin/zkServer.sh status

JMX enabled by default

Using config: /opt/cdh/zookeeper-3.4.5-cdh5.3.6/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

 

       zookeeper 安装目录下文件分析

             zkData/zookeeper_server.pid:pid文件为文本文件,内容只有一行,记录了该进程的ID,用cat命令可以看到;作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。

            zookeeper.out: 一般情况下: .out是执行文件  .exe 是运行文件 .bin 是一种虚拟的镜像文件 ;在这里  每次运行zookeeper都会生成 zookeeper.out  ; zookeeper.out   的记录了zookpeer运行的环境条件;

如果是不同用户操作(尤其是root用户操作以后,再使用其他用户操作),则对这个文件没有权限;所有开启不了(hadoop/logs下的 .out文件也是这个作用)

           解决方法: 删除这两个文件,重启zookeeper

 

 B.  hmaster挂掉1

    ERROR: Can't getmaster address from ZooKeeper; znode data == null

             场景:在hbase shell里执行命令时,报的错误

          分析:hmaster挂了,看 日志,HMaster挂掉的原因如下:

org.apache.hadoop.hbase.TableExistsException: hbase:namespace

        at org.apache.hadoop.hbase.master.handler.CreateTableHandler.prepare(CreateTableHandler.java:133)

        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:1076)

        at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:943)

        at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:614)

        at java.lang.Thread.run(Thread.java:745)

 

2016-10-21 19:48:34,092 ERROR [main] master.HMasterCommandLine: Master exiting

java.lang.RuntimeException: HMaster Aborted

        at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:194)

        at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:135)

        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

        at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)

        at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2829)

分析:

Resolve:

Remove /hbase in zookeeper and restart hbase.

-  Go into zookeeper lient via:

 

分析日志:这种问题出现在,以前的hbase 被zookeeper 监控,信息已经被zookeeper保存;然后删除该hbase,在相同的目录安装该hbase,就会出现hbase.TableExistsException(hbase 已经在zookeeper注册);所以只需要在hbase里取消该hbase的监控,重启hbase(自动再次注册)

 解决方法:

1.到zookeeper根目录,执行以下命令

    bin/zkCli.sh

             rmr /hbase

2.重启hbase   

cd/opt/cdh/hbase-0.98.6-cdh5.3.6/

bin/hbase-daemon.shstart master

bin/hbase-daemon.shstart regionserver

bin/hbaseshell

更多推荐