【问题标题】:How row level deletes are handled in HBASE?在 HBASE 中如何处理行级删除?
【发布时间】:2017-08-26 10:54:52
【问题描述】:

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

但在压缩过程中,较小的 HFile 会被转换为较大的 HFile。

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

【问题讨论】:

    标签: hadoop hbase hdfs nosql


    【解决方案1】:

    基本上它只是被标记为删除,实际删除发生在下一次压缩期间。详情请看Deletion in HBase文章。

    【讨论】:

      【解决方案2】:
      1. 插入数据后不会立即创建 HFile。首先,数据存储在 memstore 中。一旦 memstore 足够大,它就会被刷新到 HFile。不会为每个记录或行创建新的 HFile。还要记住,由于记录存储在内存中,它们会被排序然后刷新到 HFile。这就是 HFile 中的记录始终排序的方式。
      2. HFile 是不可变的 [HDFS 中与此相关的任何文件都应该是不可变的]。记录的删除不会立即发生。它们被标记为删除。并且当系统运行compaction(Minor或Major)时,标记为删除的记录实际上被删除并且新的HFile不包含它。如果未启动压缩,则记录仍然存在。但是,无论何时查询,它都会被屏蔽显示。

      【讨论】:

      • 如果memstore中存在的记录被请求删除怎么办-它会被立即删除还是被标记并刷新到HFiles并在下一次主要压缩期间删除?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多