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

2022-07-06 21:00:33 浏览数 (1)

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

关于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.cn/116634.html原文链接:https://javaforall.cn

0 人点赞