关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unity3d 入门[通俗易懂]

    unity3d 入门[通俗易懂]unity关联vsunity安装cinemachineassetstore搜索cinemachine插件,import后确认导入后,可以在packages节点(library/packagecache中代码)找到Cinemachine如果报错(确保没有io错误):Windows>PackageManager>inproject依赖项,删除后,重新安装IO错误…

    2022年8月10日
    4
  • PyTorch学习笔记(6)——DataLoader源代码剖析

    PyTorch学习笔记(6)——DataLoader源代码剖析这两天把DataLoader的源代码的主要内容进行了一些分析,基于版本0.4.1。当然,因为内容比较多,没有全部展开,这里的主要内容是DataLoader关于数据加载以及分析PyTorch是如何通过Python本身的multiprocessing和Threading等库来保证batch是顺序取出的。额外的内容都会给出链接,在这里不会详细展开。0.前言(楔子)本篇关于DataLoad…

    2022年6月10日
    68
  • sql学习

    sql学习SQL学习基础SQL是什么?可以做什么?sql的全称是StructuredQueryLanguage,可以访问数据库,对数据进行增删改查,1986年成为ANSI(美国国家标准化组织)的一项标

    2022年7月2日
    23
  • Oracle Instant Client(即时客户端) 安装与配置

    Oracle Instant Client(即时客户端) 安装与配置一、下载下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html这是Ora

    2022年7月3日
    34
  • shell数组变量赋值_形参可以是常量变量或表达式

    shell数组变量赋值_形参可以是常量变量或表达式1.定义数组bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:【示例】定义数组:array_name=(value0value1value2value3)数组的值类型任意,个数不限可以不使用连续的下标,而且下标的范围没有限制:array_name=([0]

    2022年10月30日
    0
  • 轻松学会python的turtle模块,画一箭穿心、小人儿发射爱心、520表白完整代码,海龟作图小创意「建议收藏」

    轻松学会python的turtle模块,画一箭穿心、小人儿发射爱心、520表白完整代码,海龟作图小创意「建议收藏」当我们学了turtle后(如果不懂turtle模块的话,文章末尾会详细介绍的),就想尝试为自己心里喜欢的人画一颗一颗爱心,想用代码逗自己的小猪猪女孩开心,表达自己的爱意,那么福利来了,动动小手指,复制粘贴即可,不过有些地方需要适当修改,快给自己心爱的女孩看看吧importturtleimporttime#实现清屏defclear_screen():

    2022年6月28日
    59

发表回复

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

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