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