#--------------------------------------环境(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中发现:

hbase命令droptable_apache

既然在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命令droptable_apache_02

-------------------------------------------------hbase和hadoop兼容版本(end)---------------------------------------------------------------------------------