1. 程式人生 > >Hbase建立表錯誤

Hbase建立表錯誤

啟動hbase出現如下錯誤:

hbase(main):004:0> create 'zhh','cf'

ERROR: java.io.IOException: Table Namespace Manager not ready yet, try again later
        at org.apache.hadoop.hbase.master.HMaster.getNamespaceDescriptor(HMaster.java:3187)
        at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1743)
        at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1782)
        at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:40470)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2012)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:98)
        at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:73)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

錯誤原因可能有三個方面:

1、各個節點的時間不一致造成。單節點不存在該問題,主要針對叢集。

2、zookeeper引起的,通常這種情況往往是在你正在執行一個程序正在操作hbase資料庫的時候,hbase程序被殺掉或hbase服務被停掉所引起的,如果是hbase自身管理的zookeeper。

解決方法:可以將hbase的zookeeper目錄下的檔案全都刪除掉,然後再重啟hbase服務就可以了.

3、資料損壞導致當前資料存放的regin無法使用,使用hadoop fsck  /hbase 檢查是否有損壞塊

解決方法:此時使用hadoop fsck 進行分析 就能看到CORRUPT 的storefile路徑 hadoop fs -rm 當前storefile


4、本例子錯誤原因並非以上情況。

解決方法:刪除hbase/logs的所有日誌檔案,然後重啟hbase就可以了