报错:关闭HBase时无法找到Master:no hbase master found(完美解决)

摘要:
错误报告当HBase关闭时,会报告一个错误:nohbasemasterfound。但此时,我可以确认HMaster处于活动状态,Hadoop和Zookeeper都正常运行。此时可以大致确定错误原因。系统找不到HBase的pid文件。pid文件包含HBase的进程编号。如果找不到进程编号,系统将无法结束进程。步骤5:添加hbase-root-master.znode文件,在/var/hbase/ids目录下创建一个名为hbase-root-master.znode的文件,将c202pc1160001593770258927复制到其中,保存并退出。

报错现象

关闭HBase的时候,报错:no hbase master found

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第1张

但是此时我可以确定 HMaster 处于存活状态,而且hadoop和zookeeper也都运行正常。

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第2张

报错原因

此时可以大体确定报错原因,系统找不到HBase的pid文件,pid文件里面是HBase的进程号,找不到进程号系统就没有办法去结束这个进程。

HBase的pid文件默认存放路径为 /tmp 路径,可以进去看一下有没有和HBase相关的文件。肯定没有,因为很有可能被操作系统删掉了。

报错解决

(1)修改pid文件存放路径

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

将文件中的对应行修改(大约119行左右)

export HBASE_PID_DIR=/var/hbase/pids

路径可以按照自己的习惯指定,但是一定要放在一个安全的地方,不要动不动就被linux系统抓了壮丁删掉。

(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文件里面的内容,直接复制进去保存。

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第3张

将进程号记下来,去/var/hbase/pids目录下创建一个名为 hbase-root-regionserver.pid 的文件,

将进程号37821(根据自己情况,不要复制我的)复制进去,保存退出。

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第4张

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

进入zookeeper客户端:

[root@c202pc1 pids]# zkCli.sh

[zk: localhost:2181(CONNECTED) 8] ls /hbase/rs/c202pc1,16020,1593770260358  # 一直点Tab键(不要太死板,偶尔点个/键),就会出来一串字符

host:c202pc1

port:16020

startcode:1593770260358

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第5张

/var/hbase/pids目录下创建一个名为 hbase-root-regionserver.znode 的文件,将/hbase/rs/c202pc1,16020,1593770260358(根据自己情况,不要复制我的)复制进去,保存退.出。

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第6张

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

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

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第7张

将进程号记下来,去/var/hbase/pids目录下创建一个名为 hbase-root-master.pid 的文件,将进程号37693(根据自己情况,不要复制我的)复制进去,保存退出。

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第8张

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

/var/hbase/pids目录下创建一个名为 hbase-root-master.znode 的文件,将c202pc1,16000,1593770258927(根据自己情况,不要复制我的)复制进去,保存退出。

host:c202pc1

port:16000

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

报错:关闭HBase时无法找到Master:no hbase master found(完美解决)第9张

第六步:重启

先关HBase

再关Hadoop

再关Zookeeper

再按照相反顺序启动即可。

免责声明:文章转载自《报错:关闭HBase时无法找到Master:no hbase master found(完美解决)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux 信号signal处理机制配置跳过javadoc文档jar打包过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ES脑裂问题

脑裂:一个集群中的不同节点对于集群的状态有了不一样的理解 ES集群的总体状态是red,本来9个节点的集群在结果中只显示4个节点在线; 正常情况下,集群中的所有节点应该对集群中的master的选择是一致的,这样获得的状态信息也应该是一致的,不一样的状态信息,说明不同的节点对master的选择出现了异常-----也就是所谓的脑裂问题,这样的脑裂状态直接让节点失...

Redis主从同步、哨兵模式、集群模式配置

Redis主从同步、哨兵模式、集群模式配置 目录 Redis主从同步、哨兵模式、集群模式配置 一、概述 二、Redis主从同步 2.1、配置信息 2.2、检查状态 2.3、验证主从 三、哨兵模式 3.1、配置信息 3.2、检查状态 3.3、验证故障转移 四、集群模式 五、相关参考 一、概述 redis主从:是备份关系, 操作主库,数...

【Modbus】Java使用 modbus-master-tcp 读取和写入Modbus服务器数据

参考了云逸的 Java实现ModbusTCP通信1、前言 在井下综采面需要用到工业级控制协议,采用了Modbus主站从站通讯方式,直接操作寄存器数据,实现读取和控制。 2、引用pom <dependency> <groupId>com.digitalpetri.modbus</group...

HBase 表操作

Hbase 表操作 Master:负责启动的时候分配Region到具体的RegionServer,执行各种管理操作。 RegionServer:有一个或多个Region。 Region:表的一部分数据。HBase是一个会自动分片的数据库 一个WAL:预写日志,是一个环状滚动日志,当操作到达Region时,Hbase先将操作写到WAL中。HBase先把数据...

HBase 学习(一) Python操作Hbase

一,前言 二,包安装 三,表操作DDL 四,数据操作DML 正文 一,前言   上节讲到我们可以用JavaAPI进行Hbase的操作,但是很明显,Java的API很底层,用起来会很不方便,如果你们学习过Python,可以用Python来对Hbase进行操作。   happybase使用:https://happybase.readthedocs.io/e...

准实时数仓设计方案

原文出处:大数据最佳实践链接:https://mp.weixin.qq.com/s/VlYyzLvTECM5XSRLklGrOg 目前的数仓大概分为离线数仓和实时数仓。离线数仓一般是T+1的数据ETL方案;实时数仓一般是分钟级别甚至更短的时间内的ETL方案。实时数仓一般是将上游业务库的数据通过binlog等形式,实时抽取到Kafka,进行实时ETL。但目前...