BlockCache
首先要明白Block,在HBase里面存储的最小单元;在memstore向硬盘刷的时候,如果目标block的大小+size之后大于MAX_SIZE,将会新创建一个block来存储数据。
Block有四种类型:data,meta,index以及bloom;data就是存储数据的block;index和bloom目的都是了高效获取数据的block以及运用bloom算法获得;meta则是存储HFile的基本信息以及表信息(元数据)
为了高效获取数据,HBase设置了BlockCache机制,内存中缓存block,Block大体来分为两类,一类是JVM的heap内存,一类是heap off内存;第一类的cache策略叫做LRUCache,第二类Cache策略有SlabCache以及BucketCache两类;
LRUCache(LC)就是最近未用策略,这个很好理解;里面被划分为上区域,分别是单次请求( single-access),多次请求(multi-access)以及内存数据(in-memory);占比为25%,50%,25%;一个数据缓存首先是放置到sa域,第二被请求放到ma域;memory域则是存放column family设置为IN-MEMORY的数据;
SlabCache(SC)内部结构是划分为两块,80%和20%;缓存的数据如小于等于blocksize,则放在在前面的区域(80%区域);如果block大于1x但是小于2x将会放置到后面区域(20%区域);如果大于2x则不进行缓存;
BucketCache(BC)和上面主要区别在于提供了三种存储模式,分别是heap(JVM堆内存),offheap(DirectByteBuffer,堆外内存)以及file(存储在SSD或者内存性文件系统),BucketCache和LUR相似的地方在于它也是在整体上把内存三部分(25%,50%,25%);但是BucketCache做的更进一步,将整体的cache区域划分为了14个bucket(每个bucket大小不同);
SC和BC被设计成多级缓存策略;LC为一级缓存,BC/SC为二级缓存;但是LC-BC和LC-SC是不一样的;LC-BC为L1(LC)级缓存负责Index和bloom块,L2(BC)负责data块;LC-SC的策略则是L1和L2彼此独立;
什么时候考虑SL和BL呢?当JVM的Heap内存告急以及JVM因为回收导致响应慢的时候,考虑他们。
那么测试的结论是什么呢?
下面的评测是只有一级缓存的情况下的测试;
LC在hold30G一下JVM没有问题;但是到达50之后延迟就比较严重了;
SC和BC相比较,BC有比较明显的性能优势;而且BC里面的tmpfs模式性能最佳,offheap的方式位于第二;但是offheap的配置非常简单,tmpfs的配置则要复杂得多;权衡一下其实offheap就可以,但是如果内存如果吃紧,那么就采用tmpfs模式;
下面是二级缓存的评测结果:
L1(LC)+L2(BC)的效率是最高的,而且由于LC和BC一级Cache的效果。
 
作者最后总结道:如果数据量能够全部装入到JVM内存中(fit into memory)则OK,采用LRU是最高效;但是如果数据量是大于JVM内存2x,则考虑二级缓存,L1采用LC,L2采用BC。
 
参考:
 
 

HBase的BlockCache的更多相关文章

  1. HBase之BlockCache数据读取(转)

    转自:http://blog.csdn.net/u014297175/article/details/47976909 Hbase上Regionserver的内存分为两个部分,一部分作为Memstor ...

  2. HBase BlockCache

    1. Cache 读写  调用逻辑:  hmaster.handleCreateTable->HRegion.createHRegion-> HRegion. initialize-> ...

  3. HBase设计与开发性能优化(转)

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...

  4. HBase性能优化方法总结(转)

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...

  5. 第五章:大数据 の HBase 进阶

    本课主题 HBase 读写数据的流程 HBase 性能优化和最住实践 HBase 管理和集群操作 HBase 备份和复制 引言 前一篇 HBase 基础 (HBase 基础) 简单介绍了NoSQL是什 ...

  6. hbase性能优化总结

    hbase性能优化总结 1. 表的设计 1.1 Pre-Creating Regions 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都 ...

  7. 在Ubuntu18.04下配置HBase

    HBase在HDFS基础上提供了高可靠, 列存储, 可扩展的数据库系统. HBase仅能通过主键(row key)和主键的range来检索数据, 主要用来存储非结构化和半结构化的松散数据. 与Hado ...

  8. hbase的写和读,大合并和小合并

    Hbase写: 客户端向hbase服务器端发送写的请求时,hbase会同时进行两个动作,把记录写在WAL(write ahead log)日志文件中,每台服务器所有表都共享这个WAL文件.然后会写到m ...

  9. hbase 性能调

    一. HBase的通用优化 1 高可用 在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果 Hmaster 挂掉了,那么整 ...

随机推荐

  1. JQuery插件让图片旋转任意角度且代码极其简单 - 摘自网友

    JQuery插件让图片旋转任意角度且代码极其简单 2012-04-01 09:57:03     我来说两句      收藏    我要投稿 引入下方的jquery.rotate.js文件,然后通过$ ...

  2. elasticsearch 自定义_id

    elasticsearch 自定义ID: curl -s -XPUT localhost:9200/web -d ' { "mappings": { "blog" ...

  3. python学习笔记(七)---编辑器pycharm的安装

    百度经验网址: https://jingyan.baidu.com/article/0f5fb0993624176d8234ea6c.html 其中 添加 “0.0.0.0 account.jetbr ...

  4. webservice 基本要点

    webservice的特点 webservices是自我包含的 webservices是自我描述的 webservices是跨平台和语言的 webservices是基于开放和标准的 webservic ...

  5. 利用express.js连接mongodb数据库

    var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/ ...

  6. 15 int *ptr= (int *)(&a+1)跨了整个数组长度

    分析以下程序,输出结果 2,5 #include<stdio.h> int main() { ]={,,,,}; ); printf(),*(ptr-)); ; } 分析: a 代表的是i ...

  7. Oracle11g 查询长时间运行的SQL

    一.大量的查询 某些时候,因为SQL的问题,导致数据库的session大量积压,服务器的磁盘读增大,CPU使用率剧增.一般这种SQL,都是一些全表扫描.多表关联.报表或者排序类的SQL.这中情况很有可 ...

  8. 编译EXE文件的时候pcap编译不进去。 pyinstaller pcap pypcap 报错

    如果生成的exe源码中有import pcap 那么你目标机上就要先装npcap 并勾选winpcap API. 然后就不出这个问题了. 暂时的办法是第一个exe不包含import pcap.自检np ...

  9. 基于GUI的简单聊天室02

    服务器端 与上一篇相比,加进了线程内部类,解决多个客户端连接时,服务器无法全部响应的问题. 利用List集合来装载客户端的对象. 还需要注意全局变量的应用. /** * 相比01,加进了线程内部类,解 ...

  10. python爬虫常见面试题(一)

    前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...