1. 程式人生 > 實用技巧 >記一次 HBase Master is initializing 問題處理

記一次 HBase Master is initializing 問題處理

問題

hbase shell中建立建表出錯

分析

org.apache.hadoop.hbase.PleaseHoldException: Master is initializing代表Master正在初始化中,出現這種錯誤的原因有很多,檢視hbase web介面,發現如下提示:

看下Master的日誌,發現一條WARN日誌:

下午1點59:29.953分	WARN	HMaster	
hbase:namespace,,1602737534746.41cb240b37c7ba2e67a1bff035799b61. is NOT online; state={41cb240b37c7ba2e67a1bff035799b61 state=OPEN, ts=1605238978817, server=bg11194.hadoop.com,16020,1602750152053}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

元資料namespace,,1602737534746.41cb240b37c7ba2e67a1bff035799b61未分配到RegionServer上

解決

嘗試1:重啟hbase,發現無效

嘗試2:手動分配,執行 assign 'namespace,,1602737534746.41cb240b37c7ba2e67a1bff035799b61',無效,仍提示org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

嘗試3:

  1. 停止hbase服務,然後刪除zk上/hbase目錄,重啟hbase,其中由於啟動kerberos安全加固,刪除zk上的/hbase目錄操作具體如下:
  2. 登入zk,檢視許可權
zookeeper-client -server ip:2181
[zk: ip:2181(CONNECTED) 1] getAcl /hbase
'world,'anyone
: r
'sasl,'hbase
: cdrwa
可以看到sasl使用者是hbase,退出zkclient
  1. 編寫jaas.conf.zk檔案
cat jaas.conf.zk

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/dw_hbkal/keytab/hbase.keytab"
  storeKey=true
  useTicketCache=false
  principal="[email protected]";
};
  1. 設定環境變數
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/home/dw_hbkal/CDH/sha/CDH/etc/conf/hbase-conf/jaas.conf.zk"
  1. 登入zk,刪除/hbase目錄
zookeeper-client -server ip:2181
[zk: ip:2181(CONNECTED) 0] rmr /hbase
  1. 上述步驟執行完,仍然沒有解決問題,考慮到一些元資料及資料可能是存放在hdfs上面,因為是前不久新建的cdh叢集,沒有資料,不用擔心資料丟失的問題,所有執行了以下清理的動作

    kinit hdfs(hbase使用者許可權不夠)
    hadoop fs -rmr /hbase/data/hbase/meta/*
    hadoop fs -rmr /hbase/data/hbase/namespace/*
    hadoop fs -rmr /hbase/MasterProcWALs/*
    
  2. 啟動hbase服務

    測試建表已經正常