如何在HBASE中处理行级别删除?

时间:2016-09-12 11:23:01

标签: hadoop hbase hdfs nosql

我是HBASE的新蜜蜂。那么有人可以澄清我对HBase中行级别删除的查询。 假设我们在一张表中有10条记录。因此,每条记录都将存储在单独的HFile中。因此,如果我们尝试删除任何记录,它将删除 实际的HFile。我明白了,这就是如何在HBASE中处理行级删除。

但在压实过程中,较小的HFile将转换为大型HFile。

因此所有数据将一起存储在较大的HFile中。现在,如果所有数据一起存储,将如何处理行级删除?

2 个答案:

答案 0 :(得分:1)

基本上它只是标记为删除,并且在下一次压缩期间发生实际删除。有关详细信息,请参阅Deletion in HBase文章。

答案 1 :(得分:1)

  1. 插入数据后不会立即创建HFile。首先,数据存储在memstore中。一旦memstore足够大,它就会刷新到HFile。不为每个记录或行创建新的HFile。还要记住,由于记录存储在内存中,它们会被排序,然后刷新到HFile。这就是HFiles中的记录总是如何排序的。
  2. HFile是不可变的[HDFS中的任何文件都应该是不可变的]。删除记录不会立即发生。它们被标记为删除。当系统运行压缩(次要或重要)时,标记为删除的记录实际上被删除,而新的HFile不包含它。如果未启动压缩,则记录仍然存在。但是,无论何时查询它都会被屏蔽掉。