微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HBase 如何计算刷新大小?

如何解决HBase 如何计算刷新大小?

我正在努力更好地理解 HBase 中的 memstore 刷新算法。

我有一个包含 1 个列族的简单(快速压缩)表,并且我已按如下方式配置了 HBase(我在该区域服务器上有几个区域):

  • hbase.hregion.memstore.flush.size: 128 mib
  • HBase RegionServer 的 Java 堆大小(以字节为单位):10 Gib
  • hbase.regionserver.global.memstore.upperLimit:0.4
  • hbase.regionserver.global.memstore.size.lower.limit:0.95

根据日志,似乎刷新发生在 70mb 标记处,我在日志中反复看到的内容与此类似

DefaultStoreFlusher Flushed memstore data size=68.14 MB at sequenceid=12561

为什么不是 128 mb?

解决方法

数据大小是单元数据的总和(键字节+值字节)。这是将刷新到 Hfile 的实际数据。 但是相同数据的堆使用量通常更多。除了单元格的数据,它还包括元数据和索引。当堆大小达到 hbase.hregion.memstore.flush.size 时会发生刷新。 Log 可能会指出这一点。

,

现在 hbase.regionserver.global.memstore.upperLimit 已被 hbase.regionserver.global.memstore.size 弃用

如果一个 memstore的大小达到hbase.hregion.memstore.flush.size,那么该区域内的所有 memstores将被刷新(即使那些小于128 mb)也有如果区域服务器中所有内存存储大小的总和超过,则触发刷新的区域服务器设置由 hbase.regionserver.global.memstore.sizehbase.regionserver.global.memstore.size.lower.limit 调整 Heap * hbase.regionserver.global.memstore.size.lower.limit * hbase.regionserver.global.memstore.size 那么该区域内的所有 memstore 都会被刷新

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。