hbase2.1.x delete删除的本质

删除的本质

delete 删除操作并 不会 立即将数据从磁盘上删除

当执行删除操作时,HBase 新插入一条数据,但是 type=Delete,表示数据被删除了,也成为:墓碑标记

如下:

为什么要插入一条记录

因为 HBase 的数据 保存在 HDFS ,而 HDFS 只支持 追加数据到文件,不支持文件的随机修改,所以删除操作主要是对要被删除的数据 打上标记

如何实现查询

查询的时候其实就是把所有的 HFile 都遍历一遍,一旦发现 type=Delete 墓碑标记,就不会把数据返回给用户

注意: scan 会遍历 所有的 HFile,当数据量很大时,慎用

什么时候会真正删除

直到发生 Major Commpaction 操作时,数据才会被真正的从磁盘上删除,删除标记也会从 StoreFile 删除。

测试

添加数据

put 'student','1002','info:name','lucy'
put 'student','1002','info:age','020'

执行删除

delete 'student','1002','info:name'

执行 scan 查询

scan 'student',{RAW => true}

显示结果如下:

 1002                 column=info:age, timestamp=1632553396429, value=20
 1002                 column=info:name, timestamp=1632553389014, type=Delete
 1002                 column=info:name, timestamp=1632553389014, value=lucy

删除的列标记 type=Delete


原文出处:/show_1IX1vUTJCMRR.html