关于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
关于Hbase的cache配置的更多相关文章
- HBase Block Cache(块缓存)
Block Cache HBase提供了两种不同的BlockCache实现,用于缓存从HDFS读出的数据.这两种分别为: 默认的,存在于堆内存的(on-heap)LruBlockCache 存在堆外内 ...
- MyBatis Cache配置
@(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...
- HBase的环境配置及其应用
-------------------------------------------------------------------------------------- [版权申明:本文系作者原创 ...
- [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置
tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...
- Hbase简介安装配置
HBase —— Hadoop Database的简称 ,hbase 是分布式,稀疏的,持久化的,多维有序映射,它基于行键rowkey,列键column key,时间戳timestamp建立索引.它是 ...
- hbase安装与配置-分布式
HBASE安装与配置 备注: 1:本文在hadoop的完全分布式基础上部署hbase 2:本文使用的是小博主自己搭建的zookpeer服务,未使用hbase本身的zookpeer服务 本文内容在以下前 ...
- hbase集群配置
说明 安装 配置 启动 网页效果 一点废话 本文介绍hbase集群配置 说明 hbase想正确配置成功的前提是,你必须知道hadoop集群和zookeeper集群是如何配置的 安装 下载地址 http ...
- HBase 安装与配置及常用Shell命令
HBase 安装与配置 首要配置 配置时间同步(所有节点上执行) yum -y install chrony vi /etc/chrony.conf #写入(7版本用server:8版本用pool): ...
- HBASE学习笔记--配置信息
hbase的配置信息,在hbase-site.xml里面有详细说明. 可以按照需要查询相关的配置. <?xml version="1.0"?> <?xml-sty ...
随机推荐
- 无比奇怪的问题,Runtime报错,程序仍可运行(有可能是线程崩溃,但主程序不崩溃,线程崩溃可能是因为锁使用不当引起的)
但主界面仍可操作. 我估计是,线程运行崩溃,不影响主界面的运行(如果你不去点击那个确认错误的对话框的话). 仔细分析,我估计是使用锁不当引起的.有2种情况下必崩溃: 1. 对没有上锁的锁进行解锁 2. ...
- 配置QtCreator+CDB远程调试环境(要设置_NT_SYMBOL_PATH和QT_PLUGIN_PATH和Path)
相关环境信息:开发机Win7 x64.远程机器WinXP.调试器是CDB.Qt版本5.2.1 一.部署远程机器环境 我这里用的是虚拟机(Windows XP),根据你要调试的程序选择安装不同架构的Wi ...
- Ext图表的精彩
最近做了几个Ext的图表,觉得效果还不错,分享一下 1.Chart[饼图.折线图.柱状图.堆状图]: 2.Grid: 3.最大化:
- 所有CN_消息的说明
Notification Message Corresponding WindowsConstant Message Description cn_CharToItem wm_CharToItem T ...
- codeforces.com/contest/325/problem/B
http://codeforces.com/contest/325/problem/B B. Stadium and Games time limit per test 1 second memory ...
- wamp环境中mysql更改root密码
集成的wamp环境命令不好使,在phpmyadmin中更改密码 权限——root用户修改,执行 然后,你会发现你不能用phpmyadmin登陆了修改下phpmyadmin里面对应的密码就可以了将php ...
- 14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置
14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置 locking read, 一个UPDATE,或 ...
- Java中double变量精确到小数点后几(2)位
import java.math.BigDecimal; import java.text.NumberFormat; public class Java中double类型的数据精确到小数点后两位 { ...
- .Net——使用.net内置处理程序处理自己定义节点Demo
在.net中.由于对不同的节点,都相应着类去对它进行处理,.net里面为了方便.已经内置了一些类供我们使用.使我们在读取配置文件时.不必自己去定义类去处理自己定义的自己定义节点. 以下我们写了这样一个 ...
- Android 结合实例学会AsyncTask的使用方法
AsyncTask运行时经过四个步骤,运行四个方法: 1.onPreExecute(),执行在UI线程,能够设置或改动UI控件,如显示一个进度条 2.doInB ...