Hbase数据恢复方案

1      HBase数据路由

1、  ZooKeeper中获取-ROOT- Region所在的RegionServer

2、  -ROOT- Region所在的RegionServer发送Scan –ROOT-RPC请求,来获取.META. Region 所在的位置。下图为-ROOT- Region里的具体内容

3、  .META. Region所在的RegionServer发送Scan .META.RPC请求,来获取User Region 所在的位置。下图为.META. Region的具体内容

4、  User Region所在的RegionServer发送Scan .User RegionRPC请求,来获取需要的数据。

2      元数据异常分类

由第一章的介绍,可以看出-ROOT- .META. Region中数据非常重要,如果-ROOT- .META. Region中的数据异常,将会导致整个集群的全部或者部分的User Region无法路由,集群将无法正常运行。

2.1      元数据全部丢失

元数据底层存储在HDFS(HFile形式存储),如果底层的文件块丢失,或者损坏,则会导致元数据全部丢失。

2.2      元数据部分丢失

.META.迁移后,会将其存储在-ROOT-中的位置更新为新的RegionServer的地址,同理User Region迁移后,也会将其存储在.META.中的位置更新为新的RegionServer的地址。但是更新并没有直接修改底层的存储文件,而是先写入HLog (存储在HDFS上,RegionServer宕机后,用来恢复数据),再写入内存,在满足一定条件的时候才会真正的更新到底层的存储文件(HFile),所以一旦HLog这个块异常,且RegionServer节点宕机(内存数据也丢失),这样就会导致在元数据中存储的位置没有得到更新。

3      HBase检查工具HBCK

HBase提供了一个检查工具HBCK,该工具可以检查出HBase常见的问题,并尝试修复部分问题。

执行方法:在安装的HBase客户端的bin目录下执行./hbase hbck

注意: HBase某些正常流程(Region split, Region assign),会导致HBCK检查出集群状态为异常。要确定集群异常,最好连续执行HBCK,且每次异常都相同,才能确定集群出现异常。下图为执行HBCK的检查结果为正常的集群。

4      -ROOT-数据丢失恢复

4.1      数据完全丢失修复

4.1.1        构造场景

进入HBase shell客户端执行如下命令删除-ROOT- Region中的所有数据

delete '-ROOT-', '.META.,,1', 'info:regioninfo'

delete '-ROOT-', '.META.,,1', 'info:server'

delete '-ROOT-', '.META.,,1', 'info:serverstartcode'

delete '-ROOT-', '.META.,,1', 'info:v'

4.1.2        HBCK检查现象

数据丢失后HBase集群没有重启时,HBCK检查现象

数据丢失,HBase集群重启后,HBCK检查现象

4.1.3        修复方案

1、  停止HBase集群。

2、  删除-ROOT-HDFS路径下的所有数据。

执行方法:在HDFS客户端的bin路径下,执行./hdfs dfs –rm –r /hbase/-ROOT-

3、  启动HBase集群。

4、  集群恢复正常

4.2      部分数据丢失导致.META. Region位置错误修复

4.2.1        构造场景

进入HBase shell客户端执行如下命令修改.META. Region所在的RegionServer

put '-ROOT-', '.META.,,1', 'info:server', '160-172-0-13:26003'

注:主机名指定为集群中另外一台节点的主机名

4.2.2        HBCK检查现象

一直在试图扫描.META. Region 但是因为位置错误,导致一直在循环尝试。

4.2.3        修复方案

1、  重启HBase集群

2、  HBase集群恢复正常

5      .META.数据丢失恢复

5.1      数据完全丢失修复

5.1.1        构造场景

进入HBase shell客户端执行如下命令删除-ROOT- Region中的所有数据

 

delete '.META.', 'Region', 'info:regioninfo'

delete '.META.', ' Region', 'info:server'

delete '.META.', ' Region', 'info:serverstartcode'

5.1.2        HBCK检查现象

5.1.3        修复方案

1、  进入HBase安装客户端的bin目录,执行./hbase hbck -repair

2、  HBase集群恢复正常

5.2      部分数据丢失导致User Region位置错误修复

5.2.1        构造场景

进入HBase shell客户端执行如下命令修改.META. Region所在的RegionServer

put '.META.', 'Region','info:server','160-172-0-13:26003'

注:主机名指定为集群中另外一台节点的主机名

5.2.2        HBCK检查现象

5.2.3        修复方案

1、  进入HBase安装客户端的bin目录,执行./hbase hbck -repair

2、  HBase集群恢复正常

6      极端场景测试

现在来考虑-ROOT- .META.数据全部丢失的场景,若这种场景能够修复,那么部分元数据丢失的场景也能修复。因为可以强制将元数据表里的记录给全部删除(上述的所有场景均会被这种场景覆盖)

6.1      构造场景:

1、  停止集群

2、  删除HBaseHDFS中存放的所有元数据。

进入HDFS客户端执行命令:

hdfs dfs -rm -r /hbase/.META.

     hdfs dfs -rm -r /hbase/-ROOT-

6.2      HBCK检查结果

HBase集群已停止,所以先将HBase启动,再执行HBCK

6.3      修复方案

1、  进入HBase安装客户端的bin目录,执行./hbase hbck -repair

2、  HBase集群恢复正常

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值