HBase之Compaction
目录
- Compaction
- 触发条件
- 相关参数
- 文件选取策略
- ExploringCompactionPolicy
- 常见优化
Compaction
随着memstore的不断flush,storefile的数量将会不断增加。compaction将通过合并storefile来减少文件数量,并提高读性能。conpaction以store为单位
Compaction分为两种,minor和major。
- minor通过选择较小的相邻文件,合并重写为单个storefile。minor合并不会删除delete或者过期的版本数据。
- major合并的最终结果是每个store下只有一个StoreFile,major合并将会清除已标记删除的最大版本。
HBase中发生显式删除时,数据实际上并没有被删除。只是会写入一个删除标记,这样在查询时将不会返回有该标记的数据。在major合并中,数据被最终删除。
major合并默认每七天执行一次。可以使用compaction_switch命令动态开关rs的Compaction
触发条件
1.超过一定的storefile数量:flush不断执行,storefile的数量会不断增多
2.后台线程周期检查:线程 CompactionChecker,定期触发检查是否需要执行 Compaction
3.手动触发:通过hbase shell或API触发
相关参数
- 选取策略相关
hbase.hstore.compaction.min.size=134217728
storeFile小于该值时,会选择进行minor compaction。大于等于该值时由hbase.hstore.compaction.ratio参数来决定是否compaction。在一些写业务中如果storeFile仅仅在1-2M之间,建议减小该值,避免compaction之后的文件大小仍然小于该值从而继续compaction。此参数越小,ratio check会越频繁。单位字节,默认128Mhbase.hstore.compaction.max.size=9223372036854775807
大于该值的storeFile不会进行compaction。增大该参数,会使一些较少同时较大的storeFile不会经常compaction。如果compaction发生较频繁,可以考虑增大该值。单位字节,默认LONG.MAX_VALUEhbase.hstore.compaction.ratio=1.2F
对于minor compaction,该参数决定大于hbase.hstore.compaction.min.size的StoreFile是否进行压缩。增大该参数,写代价会变大,因为会合并更大的storefile,但此时读也会seek相对较少的storefile提高速度。hbase.hstore.compaction.ratio.offpeak=5.0F
非高峰期参数 与hbase.hstore.compaction.ratio类似,只有hbase.offpeak.start.hour和hbase.offpeak.end.hour启用时才会生效hbase.offpeak.start.hour=-1
非高峰期的开始时间,表示为0到23之间的整数(包括0和23)hbase.offpeak.end.hour=-1
非高峰期的结束时间,表示为0到23之间的整数(包括0和23)
- 触发条件相关
hbase.hstore.compaction.min=3
如果在任何store中StoreFile的数量超过该值,将会进行compaction。这个值越大,compaction发生的会越晚,耗费的时间也会更多hbase.hstore.compaction.max=10
一次minor compaction可以合并的最大StoreFile数量hbase.hregion.majorcompaction=604800000
majorcompaction之间的时间间隔,默认单位毫秒。设置为0将禁用自动majorcompaction,但用户请求和基于大小的major compactions将仍然会运行。compaction 将会在给定时间窗口内的某个随机时间开始,该时间为该值乘以hbase.hregion.majorcompaction.jitter,默认为7天。hbase.hregion.majorcompaction.jitter=0.50hbase.server.compactchecker.interval.multiplier=1000
compactchecker运行的间隔时间hbase.server.thread.wakefrequency=10000 ms
compactchecker的sleep时间hbase.hstore.blockingStoreFiles=16
任何一个store下的StoreFiles超过该值,则memstore的刷新将会被阻塞直到compaction完成或者达到阻塞等待的时间(hbase.hstore.blockingWaitTime)hbase.hstore.blockingWaitTime=90000
- 线程池相关
hbase.regionserver.thread.compaction.throttle=2684354560=2* hbase.hstore.compaction.max*hbase.hregion.memstore.flush.size
compaction有两个不同的线程池,分别用于 large compaction和small compaction。如果compaction大于该值,将会进入large compaction pool。hbase.regionserver.thread.compaction.small
hbase.regionserver.thread.compaction.large
指定线程池的线程数
- 吞吐相关
hbase.hstore.compaction.throughput.lower.bound=52428800
compaction的吞吐流量下限,字节/秒hbase.hstore.compaction.throughput.higher.bound=104857600
compaction的吞吐流量上限,字节/秒
文件选取策略
hbase.hstore.defaultengine.compactionpolicy.class 通过该参数设置
- RatioBasedCompactionPolicy:老版策略。找到一个合适的文件集合之后即停止。
- ExploringCompactionPolicy:新版默认策略。相比起来,记录下所有合适的文件集合,并在这些文件集合中寻找最合适的集合。
ExploringCompactionPolicy
ExploringCompactionPolicy:默认策略,
1.列出store中所有的storefile,算法过滤出需要进行合并的子集
2.满足一些条件的storefile会被排除在外
- 大于hbase.hstore.compaction.max.size参数大小的
- bulk-load中明确指定排除合并的
3.遍历上述列表,选出符合条件的集合,并执行一些健全检查 - 如果集合中文件数量少于hbase.hstore.compaction.min或大于hbase.hstore.compaction.max,则不考虑compaction
- 回退考虑:与列表中已经找到可以合并的集合中的storefile大小进行比较,具有更小storefile大小的集合将会被存储起来,以便在memstore阻塞且无法找到可合并的集合时使用
- 对每个storefile执行检查,文件大小大于hbase.hstore.compaction.max.size的不考虑,文件大小大于或等于hbase.hstore.compaction.min.size的,如果此时该文件大小乘以hbase.hstore.compaction.ratio小于其他新的storefile(比当前文件时间更新的)之和,则会考虑
4.通过比较找到最合适的集合并执行合并。如果此时存在多个storefile但是没有符合条件的,此时会执行回退考虑。
常见优化
1.关闭major compaction,改为手动触发执行。对于较大的storefile,也会类似引起IO升高,斯所以可以将满足compaction条件的最大文件设置小一点,具体根据业务来。
2.可以考虑略调大满足minor compaction的数量,避免频繁进行。
相关文章:
HBase之Compaction
目录 Compaction触发条件相关参数 文件选取策略ExploringCompactionPolicy常见优化 Compaction 随着memstore的不断flush,storefile的数量将会不断增加。compaction将通过合并storefile来减少文件数量,并提高读性能。conpaction以store为单位 Compacti…...
设计模式之结构型模式
这些模式关注对象之间的组合和关联方式,以便形成更大的结构和功能。 适配器模式(Adapter Pattern)桥接模式(Bridge)装饰器模式(Decorator)组合模式(Composite)外观模式&a…...
centOs 6.10 编译 qt 5.15.11
安装依赖库 xcb 依赖库 qt xcb 需要的依赖 如何要用 x11, 就要在编译的时候加上 -xcb 选项,就要安装 xcb 相关的库。 到时可以在 config.log 文件查看,缺少哪个库就安装哪个。 下面是我手动安装的库和对应版本: xcb-proto-1.14.tar.gz x…...

Redis对象的数据结构及其原理汇总
本文首发于公众号:Hunter后端 原文链接:Redis对象的数据结构及其底层实现原理汇总 当我们被问到 Redis 中有什么数据结构,或者说数据类型,我们可能会说有字符串、列表、哈希、集合、有序集合。 其实这几种数据类型在 Redis 中都由…...
@RestController 注解网页返回 [] ,出现的bug
RestController 注解网页返回 [] ,出现的bug RestController RequestMapping("emp") public class EmployeeController {Autowiredprivate EmployeeService employeeService;GetMapping("find")public List<Employee> find(){List<Employee> …...

C语言指针详解(1)(能看懂字就能明白系列)文章超长,慢慢品尝
目录 1、内存和地址 2、指针简介 与指针相关的运算符: 取地址操作符(&) 解引用操作符(间接操作符)(*) 编辑 指针变量的声明 指针变量类型的意义 指针的基本操作 1、指针与整数相加…...

为什么别人年薪30W+?同样为测试人,“我“的测试之路...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试员&am…...

【Unity】XML文件的解析和生成
目录 使用XPath路径语法解析 使用xml语法解析 XML文件的生成 XML文件是一种常用的数据交换格式,它以文本形式存储数据,并使用标签来描述数据。解析和生成XML文件是软件开发中常见的任务。 解析XML文件是指从XML文件中读取数据的过程。在.NET中&#…...

Vue h5页面手指滑动图片
场景: 四张图,要求随着手指滑动而滑动 代码: imgs是父盒子 poster-item是每个图片 .imgs {white-space: nowrap;overflow: hidden;overflow-x: auto;margin-bottom: 17px;.poster-item {display: inline-block;vertical-align: middle;wid…...
Python类属性下划线的意义
在Python中,类属性(class attribute)前面带有下划线的命名约定有一些特殊的含义,但它并不会影响属性的实际行为。这是一种命名约定,用于指示属性的用途和访问级别。以下是一些常见的下划线命名约定: 1. 单…...
DbUtils概述
概述 JDBC实用工具组件 Commons DbUtils库是一个小的类集,旨在使使用JDBC更容易。JDBC资源清理代码是平凡的,容易出错的工作,所以这些类从代码中抽象出所有的清理任务,留给你真正想用JDBC做的事情:查询和更新数据。 …...

大数据基础设施搭建 - Hadoop
文章目录 一、下载安装包二、上传压缩包三、解压压缩包四、配置环境变量五、测试Hadoop5.1 测试hadoop命令5.2 测试wordcount案例5.2.1 创建wordcount输入文本信息5.2.2 执行程序5.2.3 查看结果 六、分发压缩包到集群中其他机器6.1 分发压缩包6.2 解压压缩包6.3 配置环境变量 七…...

测试开发环境下centos7.9下安装docker的minio
按照以下方法进行 1、安装docker,要是生产等还是要按照docker-ce yum install docker 2、启动docker service docker start 3、 查看docker信息 docker info 4、加到启动里 systemctl enable docker.service 5、开始docker pull minio/minio 但报错&#x…...
Django之模版层
目录 一、常用语法 二、模版语法之变量 三、模板之过滤器(Filters) 【1】default 【2】length 【3】filesizeformat 【4】slice 【5】date 【6】safe 【7】truncatechars 【8】其它过滤器(了解) 四、模版之标签 【1】for标签 【2】if 标签…...

spark性能调优 | 内存优化
目录 我们先了解一下有哪些内存温馨提示RDD示范(spark版本2.1.1)RDD进行优化Df和Ds进行示范 我们先了解一下有哪些内存 1.storage内存 存储数据,缓存 可预估2.shuffle内存 计算join groupby 不可预估spark1.6之前 静态管理的,spark1.6之…...
【PG】PostgreSQL高可用之自动故障转移-repmgrd
前言 上面的几篇文章介绍了repmgr的部署,手动进行 从节点提升,主从切换,孤立从从节点找到新的主库等操作,但是都是需要通过手动去执行命令。大家都知道,在线上生产环境中数据库每秒钟的不可用都会造成严重的事故&am…...

操作系统OS/存储管理/内存管理/内存管理的主要功能_基本原理_要求
基本概念 内存管理的主要功能/基本原理/要求 **内存管理的主要功能: ** 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。地址转换。在多道程序环境下,程序中的逻辑地…...
【手写数据库toadb】SQL解析器的实现架构,create table/insert 多values语句的解析树生成流程和输出结构分析
SQL解析器架构和实现 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方…...

设计模式-备忘录模式-笔记
动机(Motivation) 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节…...

机器学习—基本术语
目录 1.样本(示例) 2.属性 3.属性值 4.属性空间 5.样本空间 6.学习(训练) 7.数据集 8.测试 9.假设 10.学习器 11.标记 12.样例 13.标记空间(样例空间) 14.分类与回归 15.有监督学习、无监督…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...