gpt4 book ai didi

memory-management - HBase MemStore 和垃圾收集

转载 作者:可可西里 更新时间:2023-11-01 14:21:52 27 4
gpt4 key购买 nike

我是 HBase 的新手,但我已经设置好 HBase 和 Hadoop 并了解一些相关知识。

当我研究 HBase MemStore 时,我对 MemStore 的全部了解是“MemStore 是 HBase 放置必须写入或读取的数据的内存位置”。所以,这就是为什么我们想在何时何地阅读有关 memstore 的内容时,我们也会看到有关垃圾收集的讨论。

现在我的问题是,memstore 的唯一目的是在内存中保存可读和可写的数据吗?我们可以调整该内存的大小以获得 hbase 的快速回复吗?垃圾收集配置(收集器配置)会影响内存库吗?我认为应该是的。 :)

最佳答案

关于 Hbase Memstore,你是对的。一般来说,当一些东西被写入 HBase 时,它​​首先被写入一个内存存储(memstore),一旦这个 memstore 达到一定的大小*,它就会被刷新到磁盘到一个存储文件中(所有内容也会立即写入日志持久性文件)。

*从全局角度来看,HBase 默认使用 40% 的堆(请参阅属性 hbase.regionserver.global.memstore.upperLimit)用于所有表的所有列族的所有区域的所有 memstores。如果达到此限制,它会开始刷新一些 memstores,直到 memstores 使用的内存至少低于堆的 35%(lowerLimit 属性)。这是可以调整的,但您需要进行完美的计算才能进行此更改。

是的,GC 确实会影响 memstore,您实际上可以通过使用 Memstore 本地分配缓冲区来修改此行为。我建议您阅读关于“使用 MemStore-Local 分配缓冲区避免 HBase 中的完整 GC”的 3 部分文章,如下所示: http://www.cloudera.com/blog/2011/02/avoiding-full-gcs-in-hbase-with-memstore-local-allocation-buffers-part-1/

关于memory-management - HBase MemStore 和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com