设为首页 加入收藏

TOP

Hbase数据恢复方案
2018-11-28 17:31:45 】 浏览:85
Tags:Hbase 数据恢复 方案

1HBase数据路由

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节点宕机(内存数据也丢失),这样就会导致在元数据中存储的位置没有得到更新。

3HBase检查工具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.2HBCK检查现象

数据丢失后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.2HBCK检查现象

一直在试图扫描.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.2HBCK检查现象

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.2HBCK检查现象

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.2HBCK检查结果

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

6.3修复方案

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

2、HBase集群恢复正常

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HBase scan shell操作详解 下一篇Hbase总结(四)- Hbase与传统数..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目