Compaction有两种类型:

(1)minor compaction:属于轻量级。将多个小的storefile文件重写为数量较少的大storefile文件,减少存储文件的数量,实际上是个多路归并的过程。它不会删除被标记为“删除”的数据和以往过期的数据,并且执行过一次minor合并操作后,还会有多个storefile文件。因为Hfile的每个文件都是经过归类的,所以合并速度很快,只受到磁盘I/O性能的影响。

(2)major compaction:属于重量级。将一个region中,一个列簇的若干个storefile重写为一个storefile,它能扫描所有的<key,value>对,顺序重写所有的数据,重写数据的过程中,会略过做了删除标记的数据,断言删除在此时生效,同时会阻塞所有客户端对该操作所属的region的请求直到合并完毕,最后删除已合并的storefile文件

RegionServer的内存,在设置的时候,一般这样配置:

(1)MemStore ,约占40%的内存空间(主要用于写):

写请求会先写入memstore,RegionServer会给每个region提供一个memstore, memstore写满以后,会启动flush刷新到磁盘。当memstore的总大小超过限制时,会强行启动flush进程,从最大的memstore开始flush知道低于限制

(2)BlockCache,约占40%的内存空间(主要用于读):

读请求先到memstore中查数据,查不到就到blockCache中查,再查不到就到磁盘上读,并把读的结果放入blockCache。Blockcache采用lru算法,当blockcache达到上限值时,淘汰掉最近最久未使用的一批数据淘汰掉,每个regionserver只有一个blockcache

(3)其他,约占20%的内存空间。

在注重读响应时间的应用场景下,可以将blockcache设置的大一些,memstore设置的小一些,以加大缓存的命中率。

blockCache分级思想:

(1)首先通过inmemory类型cache,可以由选择地将inmemory的column famlies放到RegionServer内存中,例如meta元数据信息;

(2)通过区分Single和Multi类型的cache,可以防止由于Scan操作带来的频繁颠簸,将最少使用的block加入到淘汰算法中去。

默认配置下。对于整个BlockCache的内存,按照以下百分比分给Single、Multi、InMemory使用:0.25,0.50和0.25

hbase中Compaction的理解及RegionServer内存的使用,CacheBlock机制的更多相关文章

  1. HBase中的Client如何路由到正确的RegionServer

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  2. 【转】HBase中Zookeeper,RegionServer,Master,Client之间关系

    在2.0之前HDFS中只有一个NameNode,但对于在线的应用只有一个NameNode是不安全的,故在2.0中对NameNode进行抽象,抽象成NamService其下包含有多个NameNode,但 ...

  3. [翻译]HBase 中的 ACID

    同前面翻译的一篇关联的,同作者的另一篇:ACID in HBase 这一篇不是单纯地描述一个问题,而是以 ACID 为主题,介绍了其在 HBase 中各个部分的体现及实现. ACID,即:原子性(At ...

  4. HBase学习之深入理解Memstore-6

      MemStore是HBase非常重要的组成部分,深入理解MemStore的运行机制.工作原理.相关配置,对HBase集群管理以及性能调优有非常重要的帮助. HBase Memstore 首先通过简 ...

  5. 关于hbase中的hbase-site.xml 配置详解

    该文档是用Hbase默认配置文件生成的,文件源是 hbase-default.xml hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完 ...

  6. 为什么不建议在 HBase 中使用过多的列族

    我们知道,一张 HBase 表包含一个或多个列族.HBase 的官方文档中关于 HBase 表的列族的个数有两处描述: A typical schema has between 1 and 3 col ...

  7. 浅谈Phoenix在HBase中的应用

    一.前言 业务使用HBase已经有一段时间了,期间也反馈了很多问题,其中反馈最多的是HBase是否支持SQL查询和二级索引,由于HBase在这两块上目前暂不支持,导致业务在使用时无法更好的利用现有的经 ...

  8. 大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用

    ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知. ...

  9. 什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么

    什么是Zookeeper,Zookeeper的作用是什么,它与NameNode及HMaster如何协作?在没有接触Zookeeper的同学,或许会有这些疑问.这里给大家总结一下. 一.什么是Zooke ...

随机推荐

  1. ucos调度器详解

    这一片谈谈关于ucos调度器的相关知识. ucos的调度器的实现主要靠一个函数OS_Sched 该函数将调度器的行为分为了两个部分,第一是调度部分,第二是任务切换部分,如下 void  OS_Sche ...

  2. Vue.js使用前

    下载安装 node,npm,git 安装cnpm 淘宝cnpm镜像https://npm.taobao.org/,-g表示进行全局安装 npm install -g cnpm --registry=h ...

  3. 前段验证框架 formValidator

    http://blog.csdn.net/lorinzhang/article/details/7283557

  4. StackExchange.Redis 官方文档(三) Events

    事件 ConnectionMultiplexer类型提供了很多可以用来了解表面状态下正在发生着什么的事件.这对日志是很有用的. ConfigurationChanged - ConnectionMul ...

  5. 自己实现一个IOC(控制翻转,DI依赖注入)容器

    1.新建一个控制台应用程序 TestIOC 2.新增一个 IocFactory类 using System; using System.Collections.Generic; using Syste ...

  6. python and or用法

    and 和 or 是python的两个逻辑运算符,可以使用and , or来进行多个条件内容的判断.下面通过代码简单说明下and  or的用法: 1. or:当有一个条件为真时,该条件即为真.逻辑图如 ...

  7. C++中vector 容器的基本操作

    vector是一种简单高效的容器,具有自动内存管理功能.对于大小为n的vector容器,它的元素下标是0~n-1. vector有二个重要方法:     begin(): 返回首元素位置的迭代器.   ...

  8. jQuery仿淘宝图片无缝滚动轮播

    自己前天,也就是1月8日的时候早上自己写了一个图片滚动轮播(基于jQuery). 其实几个月以前就有朋友问过我怎么做出和淘宝上面一样的滚动轮播,一直到现在也没有真正的写好,这次写得差不多了. 但是还有 ...

  9. php 禁用eval( )函数

    php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的. 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用的情况下为了防 ...

  10. endnote 使用方法

    选择需要的期刊格式,复制到收藏夹. 下载安装插件. 鼠标放在需要插入引用的地方. 关键词搜索文献,记得在这之前要把需要的文献保存至endnote online.然后insert就行了.初次安装可能会有 ...