0.hbase的组件 架构 参考:https://cloud.tencent.com/developer/article/1084209
各个组件的功能
参考:https://zhuanlan.zhihu.com/p/75454915
1.现象:hbase shell > status #正常
hbase shell > list #正常
hbase shell > create 'person', 'name', 'age' #报错如下:
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
2.本质:看hbase的日志,报错如下:
vim ./hbase-root-master-do1cloud01.log.1
2019-07-31 14:58:29,149 WARN [master/do1cloud01:16000:becomeActiveMaster] master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPENING, ts=1564556308397, server=do1cloud02,16020,1564556283727}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.
3.解决方案:
1、时间没同步,date -R查看每个节点机器的时间,看误差是否在30秒内————本人误差正常
2、查看hbase-site.xml中参数hbase.rootdir的值,需要放在hdfs上,且主机名和端口号需与hadoop中的core-site.xml中参数fs.defaultFS的值保持一致————本人设置正确
3、修改每个主机的主机名映射,即/etc/hosts文件————本人该项设置正确
4、注意hbase和hadoop的版本匹配问题,将hadoop下的hadoop-xxxx.jar替换掉hbase/lib下的hadoop-xxxx.jar————这项无稽之谈,替换后彻底启动不了hbase进程了,其实查看hbase官网的版本匹配表就OK了,无需手动替换jar包
5、将hadoop下的core-site.xml和hdfs-site.xml复制到hbase/conf目录下————本人该项操作正确
用一个例子来演示会更加清晰