关于Hbase的cache配置[通俗易懂]

关于Hbase的cache配置

大家好,又见面了,我是全栈君。

关于Hbase的cache配置

在hbase中的hfilecache中,0.96版本号中新添加了bucket cache,

bucket cache通过把hbase.offheapcache.percentage配置为0来启用,

假设hbase.offheapcache.percentage的配置值大于0时,直接使用堆外内存来管理hbase的cache,

通过把hfile.block.cache.size的值设置为0会禁用HBASE的cache功能。

首先在CacheConfig.instantiateBlockCache函数中。
1.首先检查hbase的hfile cache是否开启,假设设置为0表示禁用cache,同一时候配置不能大于1.0
float cachePercentage = conf.getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY,
      HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT);
    if (cachePercentage == 0L) {
      blockCacheDisabled = true;
      return null;
    }
    if (cachePercentage > 1.0) {
      throw new IllegalArgumentException(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY +
        ” must be between 0.0 and 1.0, and not > 1.0″);
    }
2.检查 hbase.offheapcache.percentage是否是小于或等于0的值。假设是表示开启bucket cache
MemoryUsage mu = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
    long lruCacheSize = (long) (mu.getMax() * cachePercentage);
    int blockSize = conf.getInt(“hbase.offheapcache.minblocksize”, HConstants.DEFAULT_BLOCKSIZE);
    long offHeapCacheSize =
      (long) (conf.getFloat(“hbase.offheapcache.percentage”, (float) 0) *
          DirectMemoryUtils.getDirectMemorySize());
    if (offHeapCacheSize <= 0) {
      bucket cache……
    }else {
      使用堆外内存进行cache
    }

3.bucket cache的详细配置
a.首先读取hbase.bucketcache.ioengine配置的值,可配置项为
    file:/path/cache.data  基中的/path表示详细的文件路径,也就是SSD这类的快速磁盘
  offheap  使用堆外内存
  heap   不使用堆外内存

b.通过hbase.bucketcache.size配置cache的大小,
这里注意下规则;假设配置的值是0-1之间的小数时,表示hbase堆的百分比
否则表示配置的多少个MB的值,如此处配置为1024那么表示配置有1GB的cache
float bucketCachePercentage = conf.getFloat(BUCKET_CACHE_SIZE_KEY, 0F);
      // A percentage of max heap size or a absolute value with unit megabytes
      long bucketCacheSize = (long) (bucketCachePercentage < 1 ? mu.getMax()
          * bucketCachePercentage : bucketCachePercentage * 1024 * 1024);

c.假设配置的为二级缓存,也就是非内存的缓存时,设置hbase.bucketcache.combinedcache.enabled的值为false

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116634.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月18日 上午11:00
下一篇 2022年1月18日 上午11:00


相关推荐

  • C#开发WebService实例和发布

    C#开发WebService实例和发布WebService是一种跨平台,独立于编程语言之外的通信技术,将其部署在服务器端,在网络内的所有设备都可以调用这个WebService。本文介绍用C#开发WebService实例以及其部署和调用。首先是一个简单的WebService工程的创建:1、创建一个asp.netweb应用程序,我这里起名字叫WebServiceTest2、创建一个空的模板3、然后给这个空项目添加web服务…

    2022年7月21日
    11
  • 什么是回调函数?为什么要使用回调函数?如何使用回调函数?

    什么是回调函数?为什么要使用回调函数?如何使用回调函数?1 回调函数 函数指针的调用 即是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 就说这是回调函数 Incomputerpr acallbackisa whic

    2026年3月19日
    3
  • 蓝牙硬件简介

    蓝牙硬件简介蓝牙硬件模块由蓝牙协议栈的无线收发器 RF 基带控制器 BB 和链路管理层 LMP 组成 大多数生产厂家都是利用片上系统技术 SOC System On Chip 将这三层功能模块集嵌在同一块芯片上 它由微处理器 CPU 无线收发器 RF 基带控制器 BB 静态随机存储器 SRAM 闪存 Flash 程序存储器 通用异步收发器 UART 通用串行接口 USB 语音编 解码器 CODEC

    2026年3月17日
    1
  • Matlab画图-非常具体,非常全面

    Matlab画图-非常具体,非常全面

    2021年12月1日
    44
  • Java strictfp[通俗易懂]

    Java strictfp[通俗易懂]Javastrictfp关键字的作用strictfp关键字可以应用于方法,类和接口。strictfp关键字的非法代码Javastrictfp关键字确保您将在每个平台上获得相同的结果,如果在浮点变量中执行操作。不同平台的精度可能不同,这就是为什么java编程语言提供了strictfp关键字,它用于在每个平台上获得相同的结果。所以,现在我们就可以更好的控制浮点数据类型运算了。strictf…

    2025年8月25日
    4
  • 分子生物学数据库综合目录「建议收藏」

    分子生物学数据库综合目录「建议收藏」SRS序列查询系统http://www.embl-heidelberg.de/srs5/分子生物学数据库及服务器概览http://www.ai.sri.com/people/pkarp/mimbd/rsmith.htmlBioMedNet图书馆http://biomednet.comDBGET数据库链接http://www.genome.ad.jp/dbg

    2022年7月11日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号