hbase问题总结
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
更多推荐



所有评论(0)