分享

hbase compaction 过程是否会将region删除

wdx_827 发表于 2017-3-15 19:11:10 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 6231
请问,如果对hbase中某个表中的数据删除,如表t1,t1中包括4个region。如果对t1表删除数据时,删除的数据都在存储在某个region上,将该region上的数据都已经删除掉了,当hbase进行compaction操作时,是否会将没有数据的这个region也一并删除呢?

已有(5)人评论

跳转到指定楼层
SuperDove 发表于 2017-3-15 19:38:29
hbase的删数据中的真正删除好像就是在region合并的时候删除的,这里你把这个表都删了,那应该是这个region会删除掉的吧,个人看法是这样
回复

使用道具 举报

wdx_827 发表于 2017-3-16 09:19:29
SuperDove 发表于 2017-3-15 19:38
hbase的删数据中的真正删除好像就是在region合并的时候删除的,这里你把这个表都删了,那应该是这个region ...

我的意思是删除t1表中的数据,如果上删除的数据巧合都是在一个region上,并且这个region的数据都已经清空了,那hbase执行合并操作的时候是否也会将这个region也合并删除呢。
回复

使用道具 举报

NEOGX 发表于 2017-3-16 09:22:36

当一个列族中文件过多的时候,会触发compact,也就是说的文件合并。至于删除这个不太清楚。

HBase的compact分为两种 minor和major:minor是小范围内的合并文件,只合并部分。目的在于把小文件积累成大文件。因为没有全量数据,所以对于一个key的删除操作还是需要保留标记,无法物理删除。majorcompact把列族中的所有文件合并为一个,目的在于使key的修改和删除,最终在物理上生效。因为major compact操作的是此列族的全量数据,所以可以做物理删除。但是也由于是全量数据,执行起来耗费时间也会比价长,所以hbase对major compact做了时间间隔限制。

回复

使用道具 举报

wdx_827 发表于 2017-3-16 12:16:33
NEOGX 发表于 2017-3-16 09:22
当一个列族中文件过多的时候,会触发compact,也就是说的文件合并。至于删除这个不太清楚。

HBase的co ...

我指的合并是major_compaction
回复

使用道具 举报

wdx_827 发表于 2017-3-17 11:07:13
我在hbase集群,4个regionserver的环境下,创建一个t表,create 't','f1',SPLITS=>['1000','2000','3000'],默认每个regionserver上创建一个region。1.向t表put数据keyrow为1-10000,分别第一个region分布了3条,第二个region1111条,第三个region1117条,第四个region上7774条;2.删除第一个region上3条,执行flush,查询第一个region发现3条还在;3.执行major_compact,查看第一个region上的hfile文件,发现原文件已经不存在了,在hdfs上查看发现创建了一个新的hfile ,查看上面的数据为0。
结论:major_compact过程不会删除原region 但会删除hfile
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条