HBase MemStore和垃圾收集

kha*_*han 4 hadoop hbase memory-management

我是HBase的新手,但我已经设置并获得了一些关于HBase和Hadoop的知识.

当我研究HBase MemStore时,我对MemStore的理解是"MemStore是HBase放置必须写入或读取的数据的内存位置".所以,这就是为什么我们想要阅读有关memstore的时间和地点,我们也会看到有关垃圾收集的讨论.

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

Avk*_*han 5

你对Hbase Memstore是正确的.一般情况下,当某些内容被写入HBase时,它首先被写入内存存储(memstore),一旦这个memstore达到一定的大小*,它就会被刷新到磁盘中的一个存储文件中(所有内容也会立即写入日志中)文件的耐用性).

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

是的GC确实会对memstore产生影响,您可以通过使用Memstore-local分配缓冲区来实际修改此行为.我建议你阅读以下3篇关于"使用MemStore-Local Allocation Buffers避免HBase中的完整GC"的文章:http://www.cloudera.com/blog/2011/02/avoiding-full-gcs-in -hbase与-的memstore本地分配缓冲器部分-1 /