HBase 删除数据过程分析

2017-12-27 19:14:17来源:CSDN作者:Thousa_Ho人点击

分享

HBase的删除过程分为单行删除、多行删除和原子性操作

1.单行删除

不会立即删除,而是先在指定存储单元上标记删除,等到下一次region合并或者分裂的时候才会移除数据

删除行的时候,可以指定列簇、列或者列中具体数据进行删除。没有任何指定的情况下会删除整行数据。

如果使用 addFamily 函数,则会删除改行中的指定列簇中的所有数据。

如果使用 addColumns 函数,则会删除该行中的指定列中所有的数据。

如果使用 addColumn() 函数则会删除改行中指定列的最大本版本的KeyValue数据。

如果 setTimeStamp 则会删除指定版本的数据。

2.多行删除

多行删除其实也就是多次单行删除

省去不表

3.原子性操作

HTable表提供一个CAS原子操作: checkAndDelete()函数 在多个客户端对一行数据进行修改 保证数据的一致性。

checkAndDelete()函数有两个,两者的差别就在于是否含有一个比较器。不含有比较器的函数效果与有比较器并且比较器的标志为CompareOp.EQUAL的效果是相同的。该函数的意思为,当函数中指定的值小于等于指定的值时,则进行删除操作。

4.其他

1.setWriteToWAL()方法

是否经该删除操作写入到WAL日志中。如果写入日志,则会增加其整个删除动作的时候,但是数据操作将被记录,出现系统崩溃时可以进行数据恢复。如果不写入的话,可以降低删除动作时间,但是如果在没有量操作写入到HDFS中前发生系统崩溃,数据将无法进行恢复

2.setTTL()方法

设置一行数据的TTL时间,如果该行数据被设置,则当其时间超过TTL时,KeyValue数据会被删除。

3.请求过程

HBase是一个分布式数据库,因此一张表的数据可能会分布在不同的节点中。需要注意的是 region是Hbase分布式存储的最小单位,但region不是HBase存储的最小单位。在HBase中,一张表会被根据行键值的范围划分为几个region,然后不同的region将会放在不同的region服务器上,被服务器上的HRegionServer 所管理和维持。因此我们可以推断出,当我们发送一个查找(插入、删除)请求时,首先客户端能根据请求中的行键值去确定该行键值应该存储在哪一个region上,并且该region在哪一个region服务器上(该查询过程主要使用-ROOT-表、和.meta表,详细过程在须后章节讲解),当定位到操作的region服务器的位置以后,客户端(Client)会将该操作发送到region服务器上,然后请求操作可能会被直接执行,也可能会进入任务队列等待。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台