开发者社区> 问答> 正文

HBase上Regionserver的内存的两个部分分别是什么?

HBase上Regionserver的内存的两个部分分别是什么?

展开
收起
游客fbdr25iajcjto 2021-12-06 19:24:26 643 0
1 条回答
写回答
取消 提交回答
  • 一部分作为Memstore,主要用来写;另外一部分作为BlockCache,主要用于读。

    写请求会先写入Memstore,Regionserver会给每个region提供一个Memstore,当Memstore满64MB以后,会启动 flush刷新到磁盘。当Memstore的总大小超过限制时(heapsize * hbase.regionserver.global.memstore.upperLimit * 0.9),会强行启动flush进程,从最大的Memstore开始flush直到低于限制。

    读请求先到Memstore中查数据,查不到就到BlockCache中查,再查不到就会到磁盘上读,并把读的结果放入BlockCache。由于BlockCache采用的是LRU策略,因此BlockCache达到上限(heapsize * hfile.block.cache.size * 0.85)后,会启动淘汰机制,淘汰掉最老的一批数据。

    一个Regionserver上有一个BlockCache和N个Memstore,它们的大小之和不能大于等于heapsize * 0.8,否则HBase不能启动。默认BlockCache为0.2,而Memstore为0.4。对于注重读响应时间的系统,可以将 BlockCache设大些,比如设置BlockCache=0.4,Memstore=0.39,以加大缓存的命中率。

    2021-12-06 19:24:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
HBase在阿里搜索推荐中的应用 立即下载
大数据时代的存储 ——HBase的实践与探索 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载