Hbase安装学习中遇到问题解决
问题1
Hbase 使用启动时master时在进程中HMaster短暂的出现几秒后立即结束进程
解决方案:
最主要的原因是因为hadoop的版本问题,不同版本的hadoop的NameNode默认端口是不一样的可能是9000或者8020
Hbase中的根目录端口应该改成与hadoop的默认端口一样
- hadoop中的默认端口
![img](https://s2.loli.net/2022/07/09/IiRf41rFOKszHN5.png)
- hbase配置中的根目录端口
![img](https://s2.loli.net/2022/07/09/UeI97b2O6NtmAVG.png)
问题2
启动regionserver之后,进程也是短暂出现就消失
解决方案:
通过查看hbase的regionserver日志看到,是节点时间超时了。集群之间的节点时间不同步,会导致其启动失败。因此首先推荐在hadoop中设置同步时间服务。
或者可以修改hbase属性:hbase.master.maxclockskew 设置更大的值
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
问题3
停止hbase服务的时候出现:
no zookeeper to stop because no pid file /tmp/hbase-root-zookeeper.pid
解决方案:由于zookeeper是由自己手动启动的关闭的,hbase无法监测其运行的状况,就不能完成对zookeeper的关闭,但是配置文件中设置由hbase关闭。
修改hbase配置文件hbase-env.sh 将HBASE_MANAGES_ZK设置为false
![img](https://s2.loli.net/2022/07/09/7cvnF3HXWkxI4e8.png)
更换Hbase版本遇到的问题
问题1
由于使用的时hadoop3.x版本,与hbase1.x版本不兼容,在更换hbase2.x版本之后,在shell命令行输入命令list遇到问题:
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2739)
at org.apache.hadoop.hbase.master.HMaster.disableTable(HMaster.java:2310)
at org.apache.hadoop.hbase.master.MasterRpcServices.disableTable(MasterRpcServices.java:802)
at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:395)
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)
报错分析:
可能由于集群中的节点时间不同步,但是通过date命令查看时间是同步的。
所以只可能是在更换hbase版本时,HDFS和Zookeeper中的Hbase没有删除,所以需要将其删除
-
删除zookeeper下的hbase
# 切换到zookeeper的bin目录下 cd /opt/module/zookeeper/bin # 执行 ./zkCli.sh 命令 ./zkCli.sh # 使用 deleteall /hbase 删除zookeeper中的所有 hbase的目录 deleteall /hbase
-
重启Hbase
-
删除HDFS中的hbase目录
#在hadoop的根目录下运行 hadoop fs -rm -r /hase
问题2
hbase正常启动,但是在创建表命令时报错
因为重新安装hbase时,旧的元数据信息没有删除,使用zookeeper删除后hbase元数据后重启hbase即可。
在master主机上,进入zookeeper的bin目录,运行:#进入zooker客户端 zkCli.sh -server localhost:2181 #查看hbase下文件 ls /hbase #删除元数据信息 deleteall /hbase/meta-region-server
-
关闭hbase服务,重新启动
HBase2.4.11和Hive3.1.2集成时遇到问题
首先 在启动hive之前必须通过脚本或者手动启动metastore
问题
通过bin/hive启动hive时,命令行一直刷出WARN,INFO的日志信息,并且不出现hive(default)
方式1(可以尝试一下)
经过资料查询,有人说是因为hive3.1.2和hbase 2.4.11不兼容,应该换版本低一点的hbase。但是
更换hbase版本比较麻烦,没有采用这种解决方法
方法二(成功解决)
在Hive的安装目录下的conf目录下创建log4j.properties的日志配置文件,日志等级为WARN
编辑log4j.properties:
log4j.rootLogger=WARN, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
再次启动hive,大量日志消失