performance - HBase - 快照性能

标签 performance hbase snapshot

我正在研究一个用例,我们需要为 HBase 中的表拍摄多个快照 (80-100),我们称之为“数据”。我们希望能够在任何给定时间读取这些快照。因此,我们需要克隆快照并将其用作新表(例如“data_v01”、“data_v02”等)。我无法弄清楚多个快照是否会影响原始“数据”表的性能。

根据我阅读 HBase 文档的了解,在拍摄快照或从快照创建新表(“克隆”)时,HBase 不会复制数据。对我来说,这似乎是 HBase 创建了一组基本的 HFile,然后以类似于 WAL 的形式跟踪更改。如果这是真的,并且基础快照已有 100 天,则意味着更改将会很多。我的理解正确吗?除了https://hbase.apache.org/book.html#ops.snapshots之外,我找不到太多关于此的引用资料。

最佳答案

您可能已经知道,HBase 一致性是由 HFileWAL 文件的集合给出的。快照只是快照时表中所有 HFile 的列表(无论快照是否强制 WAL 和 memstore 刷新)。这就是为什么快照创建起来非常快且便宜 - 它所做的只是保存一个列表文件路径。这意味着在压缩时不得删除文件,而是将其移动到存档文件夹,直到没有快照引用它们(非常类似于 GC)。在某些情况下,这可能会导致存储开销。

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

从快照创建表与原始表无关。两个表可能共享一些 HFile 的事实没有任何意义,因为 HFile 是不可变的。

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

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

关于performance - HBase - 快照性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109411/

相关文章:

C# 这是 ReadOnlySpan<T> 的正确用法吗?

c# - 提高生成列表的性能

hadoop - HBase 区域服务器在 tsv 导入时不断崩溃

java - 使用phoenix在Hbase上保存数据框

java - 捕获每个错误和异常处的JVM快照

c# - 我应该重复使用点和矩形还是创建新的?

c++ - 在其他函数或循环中构造 lambda 时是否存在性能问题?

hadoop - "getMaster attempt 1 of 1 failed; no more retrying. com.google.protobuf.ServiceException: java.io.IOException: Broken pipe"连接时

单元测试中的 Angular 浅渲染快照因奇怪的行为而失败

java - 获取快照始终产生相同的值