問題
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:
- 停止hbase服務,然后刪除zk上/hbase目錄,重啟hbase,其中由於啟動kerberos安全加固,刪除zk上的/hbase目錄操作具體如下:
- 登錄zk,查看權限
zookeeper-client -server ip:2181
[zk: ip:2181(CONNECTED) 1] getAcl /hbase
'world,'anyone
: r
'sasl,'hbase
: cdrwa
可以看到sasl用戶是hbase,退出zkclient
- 編寫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="hbase@CVBG.COM";
};
- 設置環境變量
export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/home/dw_hbkal/CDH/sha/CDH/etc/conf/hbase-conf/jaas.conf.zk"
- 登錄zk,刪除/hbase目錄
zookeeper-client -server ip:2181
[zk: ip:2181(CONNECTED) 0] rmr /hbase
-
上述步驟執行完,仍然沒有解決問題,考慮到一些元數據及數據可能是存放在hdfs上面,因為是前不久新建的cdh集群,沒有數據,不用擔心數據丟失的問題,所有執行了以下清理的動作
kinit hdfs(hbase用戶權限不夠) hadoop fs -rmr /hbase/data/hbase/meta/* hadoop fs -rmr /hbase/data/hbase/namespace/* hadoop fs -rmr /hbase/MasterProcWALs/*
-
啟動hbase服務
測試建表已經正常