当前位置: 代码网 > it编程>前端脚本>Powershell > hbase 的region not online报错解决

hbase 的region not online报错解决

2024年08月02日 Powershell 我要评论
部署hbase版本2.4.14,底层存储HDFS替换为s3对象存储。hbase关机、重启后,hbase能启动,但是所有操作无法进行,meta表消失。

项目场景:

项目相关背景:
部署hbase版本2.4.14,底层存储hdfs替换为s3对象存储。hbase关机、重启后,hbase能启动,但是所有操作无法进行,meta表消失。


问题描述

遇到的问题:

hbase,关机、重新启动之后,ui页面能打开,但是表都不见了。 查看master启动日志,有警告:显示元数据meta表not online。

2023-05-19 13:59:40,429 warn  [master/dqs09:16000:becomeactivemaster] master.hmaster: hbase:meta,,1.1588230740 is not online; state={1588230740 state=open, ts=1684475912431, server=dqs11,16020,1684466863338}; servercrashprocedures=true. master startup cannot progress, in holding-pattern until region onlined.

ui页面里的表信息,system tables确实看不到meta,namespace表了
在这里插入图片描述

原因分析:

ui界面,查看procedures & locks:发现有4个procedure应该是locked了,分别是115 116 117 118
在这里插入图片描述

解决方案:

通过hbck2工具来修复。

  1. 通过bypass命令,释放卡住的procedure
#hbase hbck -j <hbck jar 包路径> -skip bypass [options] <procedure pid>
#-d 打印debug日志 -s 跳过hbase版本检测
/data01/hbase/bin/hbase --config /data01/hbase/conf hbck  -j /data01/hbase-2.4.14/hbase-hbck2-1.3.0-snapshot.jar  -d -s bypass 115 116 117 118

执行成功后,观察ui界面,查看procedures & locks:已经没有卡住的procedure了
在这里插入图片描述

  1. 通过assigns命令,重新分配meta表的region。
    上一步之后,会发现ui界面里system tables还是没有meta,namespace表。
    查看master日志,还是同样的警告
2023-05-19 14:20:40,441 warn  [master/dqs09:16000:becomeactivemaster] master.hmaster: hbase:meta,,1.1588230740 is not online; state={1588230740 state=open, ts=1684475912431, server=dqs11,16020,1684466863338}; servercrashprocedures=false. master startup cannot progress, in holding-pattern until region onlined.

这时,meta表执行assigns 命令,如下:

#hbase hbck -j <hbck jar 包路径> -skip assigns [options] <regionname>
#-d 打印debug日志 -s 跳过hbase版本检测 -o,--override  override ownership by another procedure
/data01/hbase/bin/hbase --config /data01/hbase/conf hbck  -j /data01/hbase-2.4.14/hbase-hbck2-1.3.0-snapshot.jar  -d -s  assigns -o 1588230740

执行后。返回值如果是-1 表示执行失败,其他值则是procedure 的pid,表示命令执行成功。如下,返回值119,表示成功。
在这里插入图片描述

  1. 通过assigns命令,重新分配namespace表的region。
    上一步之后,会发现ui界面里system tables还是没有meta,namespace表。
    查看master日志,namespace表也出现了不在线的警告
2023-05-19 14:28:43,568 warn  [master/dqs09:16000:becomeactivemaster] master.hmaster: hbase:namespace,,1684379932270.cf342dde35742dafa70e87cbac598011. is not online; state={cf342dde35742dafa70e87cbac598011 state=open, ts=1684477600527, server=dqs13,16020,1684466863293}; servercrashprocedures=false. master startup cannot progress, in holding-pattern until region onlined.


这时,namespace表也类似地执行assigns 命令,如下:

#hbase hbck -j <hbck jar 包路径> -skip assigns [options] <regionname>
#-d 打印debug日志 -s 跳过hbase版本检测 -o,--override  override ownership by another procedure
/data01/hbase/bin/hbase --config /data01/hbase/conf hbck  -j /data01/hbase-2.4.14/hbase-hbck2-1.3.0-snapshot.jar  -d -s  assigns -o cf342dde35742dafa70e87cbac598011

执行后。返回值如果是-1 表示执行失败,其他值则是procedure 的pid,表示命令执行成功。如下,返回值121,表示成功。
在这里插入图片描述
查看ui页面里的表信息,system tables有meta,namespace表了。user tables里也有表了。
在这里插入图片描述
在这里插入图片描述
4. 通过assigns命令,重新分配用户表的region。
上一步之后,去使用自己建的test表,做个count,发现用户表test也出现了不在线的问题。

hbase:004:0> count 'test'
org.apache.hadoop.hbase.client.retriesexhaustedexception: failed after attempts=8, exceptions:
2023-05-19t06:36:18.206z, rpcretryingcaller{globalstarttime=2023-05-19t06:36:16.808z, pause=100, maxattempts=8}, org.apache.hadoop.hbase.notservingregionexception: org.apache.hadoop.hbase.notservingregionexception: test,,1684379989794.7b8109ed8f9d7bbaf4560bed173ffbe7. is not online on dqs09,16020,1684475903824
        at org.apache.hadoop.hbase.regionserver.hregionserver.getregionbyencodedname(hregionserver.java:3392)

这时,test表也类似地执行assigns 命令,如下:

#hbase hbck -j <hbck jar 包路径> -skip assigns [options] <regionname>
#-d 打印debug日志 -s 跳过hbase版本检测 -o,--override  override ownership by another procedure
/data01/hbase/bin/hbase --config /data01/hbase/conf hbck  -j /data01/hbase-2.4.14/hbase-hbck2-1.3.0-snapshot.jar  -d -s  assigns -o 7b8109ed8f9d7bbaf4560bed173ffbe7

执行后。返回值如果是-1 表示执行失败,其他值则是procedure 的pid,表示命令执行成功。
执行成功后,重新count一下,还是原来的1万条测试数据。
在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com