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


相关推荐

  • spark处理大数据的几个实例介绍

    spark处理大数据的几个实例介绍在集群中跑应用,而不是在shell中感受写spark应用的过程整个过程为:1、案例分析:要用哪些spark的RDD的API2、编程实现:用到scala,3、提交到集群执行:如何提交到集群,文件是否先传到HDFS上4、监控执行结果:通过web可以看到介绍了四个案例:比如统计1千万个人的平均身高,如果用其他语言,估计要好几小时,因为磁盘读写,要反复计算用了sp

    2022年6月7日
    28
  • JAVA中死锁例子分析和上下文切换的实战[通俗易懂]

    本篇是整理《java多线程编程核心技术》和《java并发编程的艺术》中对于死锁和上下文切换 的学习总结!

    2022年2月26日
    36
  • 【转载】TCP粘包问题分析和解决(全)

    【转载】TCP粘包问题分析和解决(全)

    2021年11月18日
    39
  • 指针函数和函数指针「建议收藏」

    指针函数和函数指针「建议收藏」概述指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变量、函数指针数组放在一块的时候,能把强迫症的人活活逼疯。其实如果理解了这些概念的本质,是不需要死记硬背的,理解起来也比较容易。指针函数指针函数:顾名思义,它的本质是一个函数…

    2022年6月22日
    30
  • 毕业设计 – 题目:基于stm32的智能扫地机器人设计与实现

    1课题背景随着人口老龄化的到来和人民对提升生活品质的需要,人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。同时,机电、自动控制、计算机、传感器等技术的发展也为制造服务机器人提供了技术支持。扫地机器人是服务机器人中技术最成熟和最为广泛使用的机器人。它可以自动的在室内行走,通过刷扫和吸尘将地面上的碎屑吸收进垃圾收集装置中,完成清洁地面的任务,有效的减少了人们清洁地面这种简单重复的家务劳动,节约了劳动力,提高了生活品质。对于许多忙于工作和生的人来说,扫地机器人已经成为家庭必

    2022年4月6日
    97
  • git 删除时报 the branch is not fully merged 这是什么意思

    git 删除时报 the branch is not fully merged 这是什么意思

    2021年10月23日
    110

发表回复

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

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