Hbase2.0版本不支持Hbck修复命令,无法尝试修复

对的HBASE集群做跨集群数据表的迁移过程中出现了HBASE集群管理界面出现了如下情况如下图所示

问题排查

1. 排查上图中有问题的region对应的HDFS文件是否还存在。(排查结果当前不存在了)

2. 排查当前对集群的操作当前只对集群多了通过快照的方式对集群进行数据恢复操作,后排查SHELL脚本发现在数据恢复的脚本有清理 /apps/hbase/data/archive次目录下的文件

然而此目录为HBASE集群(存储表的归档和快照,HBase 在做 Split或者 compact 操作完成之后,会将 HFile 移到archive 目录中,然后将之前的 hfile 删除掉,该目录由 HMaster 上的

一个定时任务定期去清理)然而,当时脚本中有清理掉此目录下的所有文件。导致部分表的hdfs 文件丢失。

解决方案

1.  尝试重启HBASE集群看看是不是还会有其他问题。【Master不能启动】

1.1 重启集群后HBASE的master日志一直提示Meta表当中关联的region处于RIT当中。

1.2 重启集群后HBASE的master日志一直提示等待Meta表上线,部分有问题的region不能上线。

2.  网上查询了使用hbck修复,可是当前版本(2.0.2.3版本)当前工具不支持。

3.  一通搜索下来没有找到可用的方案,此时查看有问题的HBASE的region对应的HDFS文件已经不存在,想要恢复这些有问题的预发表就比较困难。

4.  开始尝试恢复

4.1. 强行删掉Meta表中有问题的region信息(此时可能存在如下问题Meta表的RowKey存在不可见字符,有可能需要写代码删除)

scan 'hbase:meta',{FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('Namespace:tables'))}
                   get 'hbase:meta','Namespace:tables'
                   deleteall 'hbase:meta','Namespace:tables'

4.2 删掉所有问题的预发表对应的HDFS文件

4.3 停掉HBASE服务

4.4 备份目录下的文件/apps/hbase/data/MasterProcWALs,然后清理掉此目录下的文件(如果重新启动HBASE还是会加载这个目录下的日志数据)

4.5 重启HBASE集群(master服务仍然不能启动)继续崩溃中。。。。。

4.6 删除HBASE在ZK下的存储目录让其根据集群配置,进行ZK元数据的重建

登陆ZK安装服务器

进入安装目录执行 cd /usr/hdp/3.1.4.0-315/zookeeper/bin

执行 如下语句

sh zkCli.sh

rmr /hbase-unsecure

4.7 重启Hbase集群后提示,master日志提示namespace表不能上线,等待namespace表上线后HBASE的Master服务才能启动。

4.8 网上的方法都不好用,那么只能查看HBASE源码,此时发现源码中关于namespace表的初始化代码(首先会检查namespace表是否存在,如果不存在会重新创建)。

具体涉及源码类:org.apache.hadoop.hbase.master.TableNamespaceManager 的方法如下:

4.9 到此时死马当活马医,停掉HBASE集群,备份HBASE的namespace的数据,删除namespace让其重建namespace的表执行如下命令

4.9.1 登陆到master服务器

su - hbase

4.9.2 清理HBASE元数据表中关于namespace的记录

scan 'hbase:meta',{FILTER => org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('hbase:namespace'))}

找出图中关于namespace的rowkey将其删掉执行如下语句

deleteall 'hbase:meta','hbase:namespace'

deleteall 'hbase:meta',hbase:namespace,,1581765383054.0441572cbb5c13996d591084f7953e20.'

停止HBASE集群备份数据

备份namespace表数据:hdfs dfs -cp /apps/hbase/data/data/hbase/namespace  /备份目录

备份MasterProcWALs目录数据   hdfs dfs -cp /apps/hbase/data/MasterProcWALs  /备份目录

清理数据【namespace,MasterProcWALs】

清理namespace表 : hdfs dfs -rm -r /apps/hbase/data/data/hbase/namespace

清理MasterProcWALs文件:hdfs dfs -rm -r /apps/hbase/data/MasterProcWALs

4.9.3 重启HBASE集群观察namespace表是否重新创建,region是否已经分配的regionserver,观察master是否已经启动。

4.9.4 此时master已经重新启动,并且在通过hbase shell 命令可以查看到所有的hbase表,以及通过hbase的web控制台可以看到之前已经创建的表。

4.9.5 此时恢复namespace当中的数据,由于我们只有的namespace中只有少量的记录,因此通过重新创建namespace的数据具体操作如下

1.登陆hbase shell

2. create_namespace 'Namespace'

4.9.6 到此时验证数据表应该能够正常访问了把,测试一张离线有数据的小表如下所示

1.登陆hbase shell

2.scan 'Namespace:tables'

此时发现表中没有查到数据,但是在集群崩溃前确认是有数据的【崩溃中】,继续如下操作确认表的状态

在HBASE SHELL中执行如下命令

is_enabled 'Namespace:tables'   但是显示表的状态为enable,怎么办难道真的要重新让数仓同学重新导入数据吗?继续测试,

在HBASE SHELL中执行如下命令

禁用表:disable "Namespace:tables" ,

启用表:enable "Namespace:tables"

然后验证数据是否正常,在HBASE SHELL当中执行

scan "Namespace:tables"

此时发现表已经能够查询到数据了,并且通过phoenix客户端也验证了数据,后续将集群中的所有表进行一次disable,enable操作至此集群所有表恢复正常。

Hbase2.0版本 Region处于RIT状态相关推荐

  1. Hbase2.0版本安装教程

    目录: 前言: 1. 上传 2. 解压 3. 重命名 4. 修改环境变量 5. 修改配置文件 6. 把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下 ...

  2. 一次HBase2.0 RIT故障处理

    关于HBCK2的介绍,可以查看文章 hbck2工具使用指南这里不做太多赘述. 本系列文章主要结合线上HBase环境出现一系列问题,进行分析HBCK2工具中出现问题如何具体解决,以及其中的原理及实现进行 ...

  3. 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线

    摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧 ...

  4. 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线 1

    一.HBase2.0和阿里云的前世今生 ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! ApsaraDB for HBase2.0是基于社区HBase2.0稳定版的 ...

  5. 消灭毛刺!HBase2.0全链路offheap效果拔群

    摘要: 我们在在线业务中使用hbase读写数据时,可能会发现,HBase的平均延迟会很低,可能会低于1ms,但P999延迟(99.9%请求返回的最大时间)可能会高达数百ms.这就是所谓的"毛 ...

  6. Win10+vm15.5.6虚拟机+unlocker3.0.3+“Intel VT-x处于禁用状态”解决方案+安装Sketch软件+汉化(mac系统)

    Win10+vm15.5.6虚拟机+unlocker3.0.3+"Intel VT-x处于禁用状态"解决方案+安装Sketch软件(mac系统)[附win系统对虚拟机mac的文件传 ...

  7. Hbase-2.0.5

    大数据之Hbase-2.0.5 第1章 HBase简介 1.1 HBase定义 1.2 HBase数据模型 1.2.1 HBase逻辑结构 1.2.2 HBase物理存储结构 1.2.3 数据模型 1 ...

  8. OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能

    作者 | 王思宇(酒祝) Photo Creidt@ 王思宇(酒祝) 背景 ​ OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computin ...

  9. 开源微服务运行时 Dapr 发布 1.0 版本

    作者 | Dapr 社区 译者 | 敖小剑 来源|阿里巴巴云原生公众号 Dapr 是 2019 年 10 月开源的分布式运行时.早在 Dapr 开源初期,阿里云就开始参与 Dapr 社区建设和代码开发 ...

最新文章

  1. node.js的开发流程_Node.js子流程:您需要了解的一切
  2. win10系统英雄联盟老是重新连接服务器,win10lol重新连接无法连接服务器重试该怎么才能解决...
  3. 疑难杂症——解决 Cinder 僵尸卷问题
  4. http、TCP/IP协议与socket之间的区别
  5. datetime 取分钟_如何仅从DateTime获取小时和分钟
  6. matlab输入数组出曲线,用鼠标画出曲线,并将曲线所经过的点保存到数组中
  7. JAVA类思维_面向对象思维 Java中的类和对象及其应用
  8. 内存溢出,频繁full gc 处理思路
  9. 康普顿效应是弹性碰撞吗_如何正确解读物理实验结果系列之十二——康普顿效应与光子...
  10. Linux Hugetlbfs内核源码简析-----(二)Hugetlbfs挂载
  11. 在windows下调试ruby192
  12. 1.恶意软件中的防双开
  13. C++中的stack类
  14. flashfxp搜索服务器文件夹,FlashFXP 命令行参数
  15. 禁止K8S容器内子进程拥有提升权限的能力
  16. 谷歌地图上不去了,用LSV就可以
  17. Excel表格成绩排名全攻略,让你事半功倍!
  18. pdf如何转换成word?分享三个好用的方法!
  19. 求字符串中的回文数或者是回文单词
  20. 半年总结——燕雀鸿鹄皆有志

热门文章

  1. 让PPT效果脱颖而出的几大技巧!
  2. 百度定位官方Demo
  3. Magic源码阅读(四)——DRC检查的实现(上)
  4. html input框的样式修改
  5. django框架基于Python实现的汽车销售系统
  6. C++求字符串长度————sizeof()、size()、strlen()以及length()详解
  7. CF1333F Kate and imperfection 分解因数
  8. PTA--文件--函数题--写文章--C语言
  9. 什么是API接口,具体是什么意思?
  10. 不玩虚的,金融科技和我们每个人有关