org.apache.hadoop.hbase.PleaseHoldException: Master is initializing(解決方案汇总+自己摸索)
#--------------------------------------環境(start)--------------------------------------------------------------
ubuntu19.10
hbase2.2.4
hadoop3.2.1
zookeeper
不使用hbase自帶的zookeeper,有個麻煩的地方,就是自帶的zookeeper沒有zkCli.sh文件,可以借助獨立的zookeeper中的
$ZOOKEEPER/bin/zkCli.sh的作用
?
#--------------------------------------環境(end)--------------------------------------------------------------
#--------------------------------------問題復現(start)--------------------------------------
網上很多博客搭建完zookeeper和hbase集群后只是進行了status和ls命令,這樣根本沒法發現這個錯誤,
這個錯誤最要命的地方就是寫入的時候才會觸發,運氣不好的,status和ls命令也會觸發。
問題復現:
hbase(main):001:0> create 't1', {NAME => 'f1', VERSIONS => 5}
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
?? ?at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2821)
?? ?at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2028)
?? ?at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:659)
?? ?at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
?? ?at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413)
?? ?at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
?? ?at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
?? ?at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
意外發現也可以在web ui中發現:
既然在HBCK report中出現,那猜測和HBCK這個東西相關。
這個問題的原因非常多,需要一個個排查各種方案進行嘗試。
#--------------------------------------問題復現(end)--------------------------------------
#--------------------------------------網上現有的方案(開始)--------------------------------------------------------------
①hbase-site.xml中尤其是ip和端口要仔細檢查,不要沖突了(尤其是搞偽分布式的)
②$HBASE_HOME/logs中確保各個文件沒有報錯,如果是下面這種,則可以忽略
INFO ?[main-SendThread(Laptop:2182)] zookeeper.ClientCnxn: Opening socket connection to server Laptop/192.168.0.102:2182. Will not attempt to authenticate using SASL (unknown error)
③/home/appleyuchi/bigdata/hadoop-3.2.1/logs這個路徑下查看下log
④集群中某個節點的時間與其他主機不同步,關閉集群防火墻,hbase-site.xml中參數hbase.rootdir使用hdfs協議
⑤進入zookeeper的shell模式然后deleteall /hbase
-----------------------------------------------網上現有的方案(結束)----------------------------------------------------------------
網上所有方案嘗試失敗,于是開始了艱難又辛酸的排查過程。。。。(嗚嗚嗚嗚~~~)
因為web UI中的hbck report中報告了該錯誤,所以猜測和hbck相關。
命令行輸入hbase hbck
2020-05-20 11:08:46,047 INFO ?[main] client.RpcRetryingCallerImpl: Call exception, tries=6, retries=16, started=4214 ms ago, cancelled=false, msg=org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
?
$HBASE_HOME/logs/hbase-appleyuchi-zookeeper-Desktop.out得到:
java.io.IOException: Could not find my address: Desktop in list of ZooKeeper quorum servers
hbase-env.sh中修改為:
export HBASE_MANAGES_ZK=false
?
最終解決方案:
hadoop3.2.1改成3.1.2,配合hbase2.2.4即可。
再次hbase shell,可以順利新建數據表了
問題解決了,沒事真的別去嘗試最新的版本。
------------------------------------------------排查過程中碰到的常見問題(start)---------------------------------------------------------
問題一:
當①②確保沒有,那么這個時候,報錯的源頭就在③中了,根據③我們得到:
hadoop-appleyuchi-namenode-Desktop.log:org.apache.hadoop.fs.PathIsNotEmptyDirectoryException: `/hbase/WALs/desktop,16020,1589718585850-splitting is non empty': Directory is not empty
解決方案:
①hdfs dfs -rm -r /hbase/WALs/*
②關閉hbase
③關閉hdfs
④啟動hdfs
⑤關閉hdfs安全模式
⑥啟動hbase
⑦得到新的報錯:
java.io.FileNotFoundException: File does not exist: /hbase/WALs/
重復②-⑥可以讓該報錯消失。
?
問題二:
運行本文開頭的語句得到:
hbase(main):004:0* create 't1', {NAME => 'f1', VERSIONS => 5}
ERROR: KeeperErrorCode = NoNode for /hbase/master
找到zoo.cfg中的下面兩行
dataDir=/home/appleyuchi/dfs/zookeeper/data
dataLogDir=/home/appleyuchi/dfs/zookeeper/log
然后刪除上述兩個路徑下面的version-2文件夾
------------------------------------------------排查過程中碰到的常見問題(end)---------------------------------------------------------------------
-----------------------------------------------------hbase和hadoop兼容版本(start)-------------------------------------------------------------
-------------------------------------------------hbase和hadoop兼容版本(end)---------------------------------------------------------------------------------
Reference:
[1]hbase操作(shell 命令,如建表,清空表,增刪改查)以及 hbase表存儲結構和原理
[2]HBase hbck——檢察HBase集群的一致性
[3]Apache HBase ? Reference Guide
?
?
?
總結
以上是生活随笔為你收集整理的org.apache.hadoop.hbase.PleaseHoldException: Master is initializing(解決方案汇总+自己摸索)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The procedure WAL re
- 下一篇: 「已解决」什么地跑填四字词语