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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章