HBase-compact的作用、两种实现方式、触发时机
了解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的作用、两种实现方式、触发时机的更多相关文章
- struts2+spring的两种整合方式
也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...
- 两种include方式及filter中的dispatcher解析
两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...
- Spring的两种代理方式:JDK动态代理和CGLIB动态代理
代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对 ...
- 细说java中Map的两种迭代方式
曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...
- Spring学习之Spring与Mybatis的两种整合方式
本机使用IDEA 2020.1.MySql 8.0.19,通过Maven进行构建 环境准备 导入maven依赖包 <dependencies> <dependency> < ...
- Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...
- Web APi之认证(Authentication)两种实现方式【二】(十三)
前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- JavaScript 函数的两种声明方式
1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...
随机推荐
- vue中class样式与内联样式
(1):style使用 <div class="score" :style="{ color: colorComputed(item.status) }" ...
- @Import 源码解析
转发请注明出处: @Import通过快速导入的方式实现把实例加入spring的IOC容器中:一般@EnableXXX注解是通过@Import实现具体的功能(@EnableXXX注解上加个@Import ...
- 从零开发一款图片编辑器(使用html5+javascript)
最近开发了一个图片编辑器,类似于photoshop的网页版,源码参考自GitHub上,顺便也总结下使用html+js开发一个编辑器需要用到哪些知识点. 预览地址: https://ps.gitapp. ...
- text, data and bss: Code and Data Size Explained
[来源]
- Security的一些配置
package com.example.demo.config; import com.example.demo.Service.UserDetailsServiceImpl; import com. ...
- js - setInterval的停止与重新启动
使用js处理问题的时候,我们可能会经常使用到setInterval()来进行定时任务或者轮询的操作,那么如何让setInterval停止和重新启动呢,下边的代码就可以实现的呦,如果有更好的方法,不吝赐 ...
- JS - Array - 在数组的指定下标添加或替换元素 。 也可删除指定下标的元素
一,首先介绍下 js Array对象 中的 splice 方法 . ( splice在英文中是剪接的意思 ) 1,定义和用法 splice() 方法用于插入.删除或替换数组的元素. 注意:这种方法会改 ...
- Laravel - 配置 数据库
- [转帖]005、体系结构之TiKV_Raft日志
Raft日志 1.Raft与Multi Raft 2.Raft 日志复制 2.1.复制流程总览 2.2.Propose 2.3.Append 2.3.Replicate(Append) 2.4 Com ...
- [转帖]Nginx 反向代理解决跨域问题
https://juejin.cn/post/6995374680114741279 编写代码两分钟,解决跨域两小时,我吐了. 如果对跨域还不了解的朋友,可以看这篇:[基础]HTTP.TCP/IP 协 ...