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. @Component 元注解

    @Component 元注解 这是一个元注解,意思是它可以用于标注其他注解,被它标注的注解和它起到相同或者类似的作用.Spring用它定义了其他具有特定意义的注解如@Controller @Servi ...

  2. Python gui编程pyQt5安装步骤

    Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWit ...

  3. idea开发工具安装说明

    开发工具安装说明   安装JDK1.8 第一步,双击"jdk-8u45-windows-i586.exe"安装文件,进行安装,具体安装过程如下图所示: 第二步,右键我的电脑-属性- ...

  4. C语言中的volatile——让我保持原样

    volatile译为:易变的.这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地址中去读取变量 ...

  5. Visual Studio build tools 安装出错的一种解决办法

    一般是安装包丢失或损坏,那么我么可以用离线下载的方式来先行下载. 用 -h 看下帮助 主要是Layout参数. 下载完,到下载目录安装吧.

  6. (C/C++学习笔记) 十. 函数

    十. 函数 ● 基本概念 函数 函数定义 function definition: return_type function_name ( parameter list ) { Body of fun ...

  7. Sqoop2安装

    下载 http://www-us.apache.org/dist/sqoop/ 打开以上链接,开始下载sqoop2   下载后得到:sqoop-1.99.7-bin-hadoop200.tar.gz文 ...

  8. 对小波变换中DWT和CWT的理解

    转载自 http://blog.sina.com.cn/s/blog_633750d90100hbco.html 连续小波变换的概念.操作.及时间尺度图的显示 最近很多网友问到关于连续小波变换的诸多问 ...

  9. DevExpress ASPxComboBox lost selected item after postback

    <dx:ASPxComboBox ID="cbxSname" ClientInstanceName="cbxSname" Font-Names=" ...

  10. 【记录】恢复win7与ARM开发板TQ2440的串口连接

    1.给板子上电. 2.接好物理上的串口连接,板子那端就是普通的RS232串口,电脑这端是USB转串口的线的USB这头,连到电脑上,然后在Win7系统下,先去看看,当前连接的USB虚拟出来的串口是哪个口 ...