HBase - 快照性能

HBase - snapshots performance

我正在处理一个用例,我们需要在 HBase 中拍摄 table 的几个快照 (80-100),我们称之为 "data"。我们希望能够在任何给定时间读取这些快照。所以我们需要克隆快照并将其用作新的 table(例如 "data_v01"、"data_v02" 等。我无法弄清楚是否有多个快照会影响性能原来的 "data" table。

根据我阅读 HBase 文档的理解,HBase 不会在拍摄快照时复制数据,也不会在从快照创建新的 table ("cloned") 时复制数据。对我来说,这似乎是 HBase 创建了一组基本的 HFile,然后以类似于 WAL 的形式或类似的形式跟踪更改。如果这是真的,并且基本快照是 100 天前的,这意味着更改会很多。我的理解正确吗?除了 https://hbase.apache.org/book.html#ops.snapshots

之外,我找不到太多参考资料

您可能已经知道,HBase 一致性由 HFileWAL 文件的集合提供。快照只是快照时 table 中所有 HFiles 的列表(无论快照是否强制 WAL 和 memstores 刷新)。这就是快照创建起来非常快速且便宜的原因 - 它所做的就是保存文件路径列表。这意味着文件 在压缩的情况下不能被删除 ,而是被移动到存档文件夹,直到没有快照引用它们(非常像 GC)。在某些情况下,这可能会导致存储开销。

I am unable to figure out whether having multiple snapshots affect the performance of the original "data" table.

从快照创建 table 与原始 table 无关。由于 HFiles 是 immutable,所以两个 tables 可能共享一些 HFiles 的事实没有任何意义。

...(if) the base snapshot is 100 days old, this would mean (that the data is outdated)

是的,这是正确的。快照只会看到创建时存在的 HFiles。