Hbase任务启停报错:no hbase master found

文章讲述了在HBase环境中遇到SLF4J类库冲突的问题,由于存在多个SLF4J绑定,解决方法包括修改pid文件存放路径、暴力或安全地解决进程问题,以及正确配置HMaster和HRegionServer的pid/znode文件。
摘要由CSDN通过智能技术生成

报错信息:

no hbase master found
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop-3.2.4/share/hadoop/common/lib/slf4j-reload4j-1.7.35.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hbase-2.2.7/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Reload4jLoggerFactory]

原因:

系统找不到HBase的pid文件,pid文件里面是HBase的进程号,找不到进程号系统就没有办法去结束这个进程。

HBase的pid文件默认存放路径为 /tmp 路径,时间久了会被操作系统删除。

解决方案:

1.修改pid文件存放路径

进入 /opt/hbase-2.0.0/conf 目录,找到 hbase-env.sh 进行修改

cd /opt/hbase-2.2.7/conf
vim hbase-env.sh
#添加pis存放路径。
#路径可以按照自己的习惯指定,但是一定要放在一个安全的位置,不要动不动就被linux系统删掉。
export HBASE_PID_DIR=/opt/hbase-2.2.7/pid

#同步至其他节点
scp -r -P 22 /opt/hbase-2.2.7/conf/hbase-env.sh root@hadoop102:/opt/hbase-2.2.7/conf/
scp -r -P 22 /opt/hbase-2.2.7/conf/hbase-env.sh root@hadoop103:/opt/hbase-2.2.7/conf/

 2.暴力解决(供测试环境使用)

直接kill掉HBase的相关进程,重启服务即可,重启之后新的pid就会在指定目录下生成。小几率会造成丢数据或者HBase无法启动的情况,但是解决问题简单、快速。

3.安全解决(供生产环境使用)

如果节点机器上有HMaster、HRegionServer两个进程,需要添加的文件如下:

hbase-root-master.pid
hbase-root-master.znode
hbase-root-regionserver.pid
hbase-root-regionserver.znode

如果节点机器上只有HRegionServer进程,需要添加的文件如下:  

hbase-root-regionserver.pid
hbase-root-regionserver.znode
第一步:在HBase未关闭的情况下再去启动HBase,使其生成pid存放目录(主节点)
第二步:添加hbase-root-regionserver.pid文件(在包含HRegionServer的节点执行此操作)

查看HRegionServer的进程号,进程号就是pid文件里面的内容,直接复制进去保存。

将进程号记下来,去/opt/hbase-2.2.7/pid目录下创建一个名为 hbase-root-regionserver.pid 的文件,将进程号5754复制进去,保存退出。

第三步:添加hbase-root-regionserver.znode文件(在包含HRegionServer的节点执行此操作)

进入zookeeper客户端:

#进入zookeeper客户端
/opt/zookeeper-3.7.1/bin/zkCli.sh

[zk: localhost:2181(CONNECTED) 0] ls /hbase/rs/hadoop10  # 一直点Tab键(不要太死板,偶尔点个/键),就会出来一串字符
# 查询结果:hadoop101,16020,1691028071312   hadoop102,16020,1691028070491   hadoop103,16020,1691028072396
host:hadoop101
port:16020
startcode:1691028071312

去/opt/hbase-2.2.7/pid目录下创建一个名为 hbase-root-regionserver.znode 的文件,将/hbase/rs/hadoop101,16020,1691028071312(根据自己情况)复制进去,保存退出。

第四步:添加hbase-root-master.pid文件(在包含HMaster的节点执行此操作)

查看HRegionServer的进程号,进程号就是pid文件里面的内容,直接复制进去保存。

将进程号记下来,去/opt/hbase-2.2.7/pid目录下创建一个名为 hbase-root-master.pid 的文件,将进程号5544复制进去,保存退出。

第五步:添加hbase-root-master.znode文件(在包含HMaster的节点执行此操作)

去/opt/hbase-2.2.7/pid目录下创建一个名为 hbase-root-master.znode 的文件,将hadoop101,16000,1691028070097(根据自己情况)复制进去,保存退出。

host:hadoop101

port:16000

startcode:1691028070097(这里随便打几个数字即可,在zookeeper中没有找到这串字符,但是发现随便输入一串数字也不会报错。)

第六步:重启

先关HBase;再关Hadoop;再关Zookeeper;再按照相反顺序启动即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值