摘要: 在学习的时候看到这样一段话: 因为所有的存储文件都是不可变的,所以就没法直接将一个值从它们里面删除,也没法对某个值进行覆盖。而只能通过写入一个墓碑式的标记,来代表某个cell或者某几个cell或者是整行都被删除了。 我就想,如果一直不删除岂不是很浪费存储空间。因为storefile是一般不可变的,但是compaction时,是否会筛选掉那些带有墓碑式标记的cell或行。为了验证我的想法,我搜了一下。找到了这样一段话。 Hbase的删除操作是不会立即删除实际数据的,而是在compaction发生的时候才会实际删除数据,在执行get或scan操作的时候,hbase实际上是将数据取出后看是否该... 阅读全文
posted @ 2012-12-05 22:01 hdu2012 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 因为region中的值都是以key来排序的,但是flush操作是生成一个新Store file(HFile),那么还怎么保持region中key的有序呢?然后又延伸出一个问题:flush操作生成的Store file,为什么大小不一?见下图(与compaction有关)原因是:flush是对一个HRegion来定义的,所以flush时,是对其所有的Store里的MemStore进行flush.即有可能会flush出多个文件,对应在不同的Store里,这样就解释了为什么大小不一。那么这么多storefile,怎么保持region中key有序呢,答案是:keyvalue是以storefile为排序 阅读全文
posted @ 2012-12-05 16:48 hdu2012 阅读(171) 评论(0) 推荐(0) 编辑