了解Flush触发条件后,这里产生了一个问题,频繁的flush会产生大量小文件,在对hbase进行查询时会产生大量IOPS,读取性能会受到很大的影响,同时也会给hdfs造成一定压力,hbase提供了一个Compact机制来合并这些HFile,以下对Compact机制做详细介绍。

在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。

一、Compaction 的作用:

1、 合并文件(将多个小的 HFile 合并成一个更大的 HFile)
2、 清除过期,多余版本的数据(对过期的数据(超过TTL、被删除、超过最大版本号)进行删除)
3、 提高读写数据的效率

二、Compaction 的分类:

HBase 中实现了两种 compaction 的方式:minor and major。这两种 compaction 方式的区别是:
1、Minor 操作只是选择部分小的、相邻的文件合并为一个大文件。
2、Major 操作是对 Region 下的Store下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。并且在这个阶段将过期的数据、已删除的数据和超出版本的数据进行物理上的清除。

三、Compaction 的触发时机:

1.MemStore Flush:每次 MemStore Flush 之后都会检查hfile数量是否满足了 Minor compaction 的条件( hbase.hstore.compaction.min 默认6),如果满足就会进行Compaction,如果一个Store内的HStoreFile文件数量超过指定值( hbase.hstore.blockingStoreFiles 默认15),则针对此HRegion的更新将被锁定直到一个compaction完成或者超过hbase.hstore.blockingWaitTime(默认30000 ms)时间。

2. CompactionCompactionChecker:HBase 专门启动一个 CompactionChecker 线程来周期性的检查是否需要进行 compaction(执行周期配置:hbase.hregion.majorcompaction 默认7天)。

3.手动触发:通过HBase Shell或者HBase API等方式 执行 compact、major_compact等命令。

Compact的详细过程,请查看:https://www.jianshu.com/p/eef5dc6f3cf4

深入理解  Compaction 机制: https://blog.csdn.net/w892824196/article/details/119961625

HBase-compact的作用、两种实现方式、触发时机的更多相关文章

  1. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  2. 两种include方式及filter中的dispatcher解析

    两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...

  3. Spring的两种代理方式:JDK动态代理和CGLIB动态代理

    代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对 ...

  4. 细说java中Map的两种迭代方式

    曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...

  5. Spring学习之Spring与Mybatis的两种整合方式

    本机使用IDEA 2020.1.MySql 8.0.19,通过Maven进行构建 环境准备 导入maven依赖包 <dependencies> <dependency> < ...

  6. Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式

    封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...

  7. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  8. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  9. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  10. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

随机推荐

  1. Spring Boot Actuator 使用和常用配置

    转载请注明出处: Spring Boot Actuator是Spring Boot提供的一个非常强大的工具,它可以帮助我们监控和管理我们的Spring Boot应用.Actuator提供了一系列的端点 ...

  2. @JsonIgnore 失效没起作用及 @JSONField(serialize = false)

    项目中需要对接口返回的某一个字段进行屏蔽,返回给前端响应的时候,不显示某个字段. 第一时间想到在实体类屏蔽的属性字段上添加@JsonIgnore注解,但添加之后并没有起作用. 在网上搜索了下,使用 @ ...

  3. Clickhouse执行处理查询语句(包括DDL,DML)的过程

    Clickhouse执行处理查询语句(包括DDL,DML)的过程 总体过程 启动线程处理客户端接入的TCP连接: 接收请求数据,交给函数executeQueryImpl()处理: executeQue ...

  4. 【SHELL】变量内容替换

    使用场景:变量存放的路径通常在使用时需要进行斜杠转义 WORKSPACE=`pwd` WORKSPACE=$(echo ${WORKSPACE//\//\\/})

  5. [转帖]mysql8 ALGORITHM=INSTANT 亿级数据秒速增加字段

    一.概述 登录后复制 在线DDL之快速增加列(秒级别的),并不会造成业务抖动.该功能自 MySQL 8.0.12 版本引入,是由腾讯游戏DBA团队贡献,此功能只适用于 InnoDB 表.实际上MySQ ...

  6. SQLServer 执行计划的简单学习和与类型转换的影响

    SQLServer 执行计划的简单学习和与类型转换的影响 背景 最近一直在看SQLServer数据库 索引.存储.还有profiler的使用 并且用到了 deadlock graph 但是感觉还是不太 ...

  7. [转帖]使用 TiUP 部署运维 TiDB 线上集群

    https://docs.pingcap.com/zh/tidb/stable/tiup-cluster 本文重在介绍如何使用 TiUP 的 cluster 组件,如果需要线上部署的完整步骤,可参考使 ...

  8. [转帖]Kafka高可用 — KRaft集群搭建

    Apache Kafka Raft 是一种共识协议,它的引入是为了消除 Kafka 对 ZooKeeper 的元数据管理的依赖,被社区称之为 Kafka Raft metadata mode,简称 K ...

  9. [转帖]Linux禁用CPU省电状态/Linux系统性能调优

    https://www.jianshu.com/p/945168b47487 How to Disable CPU Power Saving States on a Redhat or Suse Li ...

  10. [转帖]Guanaco, Llama, Vicuña, Alpaca该怎么区别

    https://zhuanlan.zhihu.com/p/106262896 在智利和秘鲁高原区经常会遇到的一种动物让人十分挠头,学术点称呼就是骆驼科其中一个族群--羊驼属和骆马属.头疼在于,分不清楚 ...