扣丁学堂大数据培训HBase从入门到精通误删数据如何恢复

2018-07-17 15:54:26 412浏览

在现如今,有很多同学在操作数据库的时候不小心误删数据,这时候如何找回?比如mysql里有binlog可以帮助我们恢复数据,但是没有开binlog也没有备份就尴尬了,比如如果是大数据开发HBase,你没有做备份误删了又如何恢复呢?下面我们来看一下关于大数据培训老师给大家介绍一下吧。


数据保护

当误删数据发生时候,不管三七二十一,第一要务是进入hbaseshell,执行如下命令:

如果误删一张表的有多个family里的数据,需要都执行一下:

alter'tt',{NAME=>'f1',KEEP_DELETED_CELLS=>TRUE},{NAME=>'f2',KEEP_DELETED_CELLS=>TRUE}

设置KEEP_DELETED_CELLS为True的目的在于防止数据被物理删除。这里有必要解释一下HBase清理数据的原理:

首先HBase是一个LSM架构,不断发生着数据文件的写入和合并当删除操作发生时,不会去清理数据文件中的数据,而是写入一个删除标记到新文件中。当某一刻majorcompaction发生时,在合并文件的同时会根据删除标记清理数据,新合并出来的数据文件不会再有旧数据。

KEEP_DELETED_CELLS的作用就是在majorcompaction发生的时候,决定要不要清理旧数据。这里需要注意一点,即便KEEP_DELETED_CELLS设置为True,数据仍然会因为过期而被清理(HBsae表中的TTL属性)。这个设定无可厚非,既然过期了,误删不误删也无所谓了。

数据恢复

数据恢复的前提数据没有被物理删除,也就是上文提及的。你只需要在查询(Scan)的时候,指定raw模式来搜索数据,就能看到被删除的数据,之后你要做就是把数据再写入一次。我们来看一个简单的例子,还是以hbaseshell为例子:

1、首先我们准备几行数据


2、然后我们删掉y开头掉数据


3、查一下,现在只有3行了


4、现在我们带上raw再次查找数据,不仅能看到被删除数据,还能看到删除标记。


这里我设置了TIMERANGE,指定的是数据写入的时间。对于我这个case其实并没有什么用,我只是想说明几点:

即便不设置RAW,也可以通过时间搜索到被删数据。比如数据写入时间是T,delete时间是T+2,那么查找[0,T+1]的话就能看见数据。前提是设置了KEEP_DELETED_CELLS=TRUE如果你后续写入重复的Key,那你必须指定好TIMERANGE,不然你可能看到的不是原先删除的keyVlaue。delete操作默认的时间不是当前server的时间,也不是构造Delete对象的时间,而是被删除的这个keyValue的写入时间。当然这个得看版本,测试时候发现1.x和2.x还是不一样的,有点坑,还以为高版本不能仅通过TIMERAGE搜素被删数据了。如果你的Deletemark的时间和数据的时间一样,那只能通过RAW看到。

数据恢复完,建议关闭KEEP_DELETED_CELLS,节省空间,提高查询效率。

其他

上文使用的是hbaseshell演示,你可以使用任何语言的API完成上面的操作。如果你使用的是云HBase,即便因为majorcompaction物理删除了数据,只要你开启了备份功能,依然可以恢复。

以上就是关于扣丁学堂大数据开发HBase从入门到精通误删数据如何恢复的详细介绍,希望对小伙伴们能有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂大数据学习群:209080834。

扣丁学堂微信公众号


关注微信公众号获取更多学习资料



查看更多关于“大数据培训资讯”的相关文章>>

标签: 大数据分析 大数据培训 大数据视频教程

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号