0712-6.2.0-HBase快照异常

2019-10-11 15:06:31 浏览数 (1)

异常重现

1.1 删除表后用快照恢复不成功

查看当前表test2信息

代码语言:javascript复制
scan ‘test2’

在CM为test2创建一个快照test2_shot1

删除表test2,可以看到表已经被删除

用之前保存的快照恢复,异常如下,由于表不存在了,第一步检查表是否启用就出现异常。

1.2 truncate清空表之后快照恢复不成功

同样,先查看表test3的数据

代码语言:javascript复制
scan ‘test3’

然后创建快照test3_shot1

清空表test3的数据

代码语言:javascript复制
truncate ‘test3’

在CM从快照恢复,显示是恢复成功的,但是去表查询,发现数据是空的。

在命令行执行scan ‘test3’查询数据为空

而且现在再为test3来创建快照会失败,如下图

异常分析

2.1 删除表后快照恢复不成功分析

这个问题是由于CDH6.2.0上在进行HBase Snapshot Restore的过程中,会先进行is_enabled的操作。但假如这个表是已经被drop掉的情况下,会报表不存在。这会导致我们在CDH6.2.0上无法进行下一步的restore的操作。

再一步经过确认后,确定是hbase.sh文件导致。这个是CDH6.2.0的一个bug,等待后续版本修复。

2.2 truncate清空表后快照恢复不成功分析

这个也是CDH6.2.0的一个bug,等待后续版本修复。

异常解决

3.1 删除表后快照恢复不成功解决办法

直接在HBase shell命令行用restore_snapshot ‘test2_shot1’可以恢复成功

代码语言:javascript复制
restore_snapshot ‘test2_shot1’
scan ‘test2’

查询表数据,和之前的数据一致。

3.2 truncate清空表后快照恢复步成功解决办法

目前没有其他方法来解决,确认是属于CDH6.2.0的一个bug,等待后续版本修复。现阶段只能在快照的使用中避开引起异常的操作方式。

总结

本文所提出的两个HBase快照恢复的问题,都属于C6的bug。目前,在进行HBase快照操作的时候,请避开文中提出的引起异常的方式:做完快照后,如果是删除表可以使用后台命令的方式恢复,不要truncate清空表因为无法恢复。等待后续的CDH版本进行更新修复。

0 人点赞