关于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

关于Hbase的cache配置的更多相关文章

  1. HBase Block Cache(块缓存)

    Block Cache HBase提供了两种不同的BlockCache实现,用于缓存从HDFS读出的数据.这两种分别为: 默认的,存在于堆内存的(on-heap)LruBlockCache 存在堆外内 ...

  2. MyBatis Cache配置

    @(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...

  3. HBase的环境配置及其应用

    -------------------------------------------------------------------------------------- [版权申明:本文系作者原创 ...

  4. [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置

    tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...

  5. Hbase简介安装配置

    HBase —— Hadoop Database的简称 ,hbase 是分布式,稀疏的,持久化的,多维有序映射,它基于行键rowkey,列键column key,时间戳timestamp建立索引.它是 ...

  6. hbase安装与配置-分布式

    HBASE安装与配置 备注: 1:本文在hadoop的完全分布式基础上部署hbase 2:本文使用的是小博主自己搭建的zookpeer服务,未使用hbase本身的zookpeer服务 本文内容在以下前 ...

  7. hbase集群配置

    说明 安装 配置 启动 网页效果 一点废话 本文介绍hbase集群配置 说明 hbase想正确配置成功的前提是,你必须知道hadoop集群和zookeeper集群是如何配置的 安装 下载地址 http ...

  8. HBase 安装与配置及常用Shell命令

    HBase 安装与配置 首要配置 配置时间同步(所有节点上执行) yum -y install chrony vi /etc/chrony.conf #写入(7版本用server:8版本用pool): ...

  9. HBASE学习笔记--配置信息

    hbase的配置信息,在hbase-site.xml里面有详细说明. 可以按照需要查询相关的配置. <?xml version="1.0"?> <?xml-sty ...

随机推荐

  1. Swift - 创建代理协议实现页面间参数传递和方法调用

    在开发中,经常需要用到协议代理模式.比如,进入编辑页面修改数据后,将新数据回传到主界面. 下面通过一个样例来说明协议代理模式,功能如下: 1,主页面有一个标签和一个修改按钮,点击修改按钮会跳转到编辑页 ...

  2. Qt之启动外部程序(使用参数很全面,还使用了setProcessChannelMode)

    简述 QProcess可以用来启动外部程序,并与它们交互. 要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串. 另外,也可以 ...

  3. OCM读书笔记(2) - PL/SQL 基础

    1. % type 用法,提取% type所在字段的类型 declare     myid dept.deptno % type;    myname dept.dname % type;begin  ...

  4. 实现web多语言的一种解决办法

    实现web多语言可能有多种解决办法,现在分享一种比较简单的思路,这篇文章主要用于记录学习过程,肯定存在不少谬误,欢迎批评指正. web多语言实现最简单的一种方法可能是每一种语言一套代码,但这样存在一个 ...

  5. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...

  6. 【COCOS2DX-游戏开发之三三】TMX边界控制与小窗体内预览TMX

    做一款像素游戏,须要确定地图的边界.保证人物的位置位于屏幕中央.到达地图左边界.地图位置不变.人向左走,到达右边界,地步位置不变,人向右走 如:地图左边.右边,上边空出的边界.还有下方留出操作butt ...

  7. nginx源代码分析--模块分类

    ngx-modules Nginx 基本的模块大致能够分为四类: handler – 协同完毕client请求的处理.产生响应数据.比方模块, ngx_http_rewrite_module, ngx ...

  8. UVA 10622 - Perfect P-th Powers(数论)

    UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...

  9. UPX 加壳工具:The Ultimate Packer for eXecutables

    UPX (the Ultimate Packer for eXecutables)是一款先进的可运行程序文件压缩器.压缩过的可运行文件体积缩小50%-70% ,这样降低了磁盘占用空间.网络上传下载的时 ...

  10. Gulp.js简介

    Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必 ...