HBase 2.0之修复工具HBCK2,修复数据

本文详细记录了在HBase服务器中毒导致异常关闭后,清理ZK并使用HBCK2工具进行数据修复的全过程。包括删除ZK目录、下载并编译HBCK2工具、检查与分配Region、验证修复效果等关键步骤,为类似问题的解决提供了参考。
摘要由CSDN通过智能技术生成

1.起因

此次修复数据情况是:服务器中毒导致HBASE异常关闭, 启动各种错误,实在没搞懂就清理了ZK关于HBASE的目录(rmr /hbase 建议先看原因,实在不行在做这个删除ZK操作,不对任何人负责,只是记录我修复的过程,仅供参考),本人的HBASE版本是2.0.5。

2.查找资料

关于如何修复ZK相关数据,查找到了相关文章 (HBase指南 | HBase 2.0之修复工具HBCK2运维指南 https://mp.weixin.qq.com/s/GVMWwB1WsKcdvZGfvX1lcA?spm=a2c4e.11153940.blogcont683107.11.49d762a815MegW),了解工具的历史和试用条件.重要的一个条件的 Master 必须启动,而且UI查看界面可以使用。链接的文章很重要的一点是取github 下载项目如何进行编译,文章是说要改<hbase.version>这个配置。我修改了相关配置但是编译报错了。所以我就没有改配置,直接进行 mvn clean package ,打包的JAR还是可以直接使用的,只有几个命令是不可用的,因为版本问题。但是不影响整体的修复工作,JAR包名称:hbase-hbck2-1.2.0-SNAPSHOT.jar,这个JAR包需要上传到你的服务器。具体使用方法,后续内容会提及

3.修复数据

       修复数据的时候要保证MASTER是启动的,可以通过tail -f -n 200 /xxxxx/xxxxxx/hbase-2.0.5/logs/hbase-hadoop-master-hbasemaster.log  hbase-hadoop(用户名)-master(master服务)-hbasemaster(应用服务器的hostname).log,没有报错就表示启动成功,或者通过hbase shell也可以查看是否启动成功

A.前提是我们环境是因为启动各种报错,然后我删除了ZK后,hbase这个命名空间的meta表没有任何数据。但是namespace本身是有数据,所以是需要恢复的,恢复流程和我们后写的修复普通表没什么不同,只是换下表名即可(表名hase:namespace和下面的目录路径匹配/hbase/hbase/namespace 后面的目录/hbase/namespace 表示命名空间和表名)

B.一下以用户表为例开始演示修复流程

1.查看需要修复的表:hdfs dfs -ls /hbase/data/product/t_user_label

使用的是hadoop的命令查看的目录,/hbase/data 是HBASE配置的数据根目录,/product/t_user_label 表示的是命名空间和表名,组合的表就是product:t_user_label

2.查看哪些region是没有分配

使用命名/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar addFsRegionsMissingInMeta product:t_user_label

/xxxxxx/xxxxx/hbase-2.0.5/bin/ (表示安装的目录)

-j ./hbase-hbck2-1.2.0-SNAPSHOT.jar (jar的引入方式)

addFsRegionsMissingInMeta product:t_user_label 增加product:t_user_label到meta表中。

xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar --help 可以查看有哪些可用的命令

最下面可以看到有哪些是没有分配region的,因为这个表没有修复过,所以作为修复案例,和上面hdfs dfs -ls /hbase/data/product/t_user_label 查看的目录也可以看出,目录和未分配的region是一致。

根据提示需要重启hbase /xxxxxx/xxxxx/hbase-2.0.5/bin//stop-hbase.sh 和 /xxxxxx/xxxxx/hbase-2.0.5/bin/start-hbase.sh

3.打开master的管理界面 http://xxx.xxx.xxx.xxx:16010/master-status 替换下IP即可,如果不能访问,可以看下是否端口和IP服务器对外开放,IPTABLES设置问题,还有要查看master的启动日志查看master是否启动完成,

界面打开后查看Regions in Transition 提示这个表不能初始化,实际原因是需要分配region

   界面上端有如下界面,获取一个服务器的id,后面的命令需要用到

5.随便选择一个ID上面的:1617781509723,使用这个服务作为手动分配region的服务,不用担心负载问题。即时你只配置到这个服务器,HBASE也会自动帮你负载到其他服务,取ID只是为了让命令执行。命令如下:

/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 04afb633c1e7d4291a8346b3f707d700
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 064be6f94771b529acaa956cd6507ade
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 0d2f203debd08a3893591554f87e826f
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 1870d781f38982776a2fc5fe77c47912
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 2b8c9ab134317196eff7e898a90e3481
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 3c8fb548ac2ef08687b0fc7c64cdb053
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 551a410f04bf420491102c43b9a4f238
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 59d371972a1f6ea8a02d9585214e89f8
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 60896d8a39b539e2c2b8deb37fbd114e
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 6c0837d0cb6736e85a5600006d53e1e2
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 7f1cf3f1f1a346f8bffd08cba564420b
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 8a9ceb920cf8beb7d95ad98e180b0f23
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 96abbdebce0f72858d950754a7976598
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 ca12b877f375284f8378d2f2ae886033
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 ca5fa48e951c12efbe3e8a454b25b8e4
/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar assigns 1617781509723 cafe78ca52776b4fd054364917602344

执行完后可以在mater的UI界面上的tables,online Regions从原来的0变成了16,标识表加载成功

 

6.检验下是否可以正常使用hbase shell,count  'product:t_user_label'

基本数据就回复完成.

6.可以查看是否还有漏掉的region没同步

/xxxxxx/xxxxx/hbase-2.0.5/bin/hbase hbck -j ./hbase-hbck2-1.2.0-SNAPSHOT.jar reportMissingRegionsInMeta product:t_user_label

提示:Missing Regions for each table:
        product:t_user_label -> No mismatching regions. This table is good! 就表示region分配完成。恢复完成

如果显示还有region未分配继续执行上面的上一步assigns操作

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值