Hbase合并怎么操作?合并的大小是多少

简介: 关于Hbase合并问题

compact的作用
flush操作会将memstore的数据落地为一个个StoreFile(HFile),那么随着时间的增长在HDFS上面就会有很多的HFile文件,这样对读操作会产生比较大的影响(读操作会对HFile进行归并查询),并且对DataNode的压力也会比较大。为了降低对读操作的影响,可以对这些HFile进行compact操作,但是compact操作会产生大量的IO,所以可以看出compact的本质就是用IO操作换取后续读性能的提升。
minor compaction (小合并)
选取部分小的、相邻的HFile文件,形成一个较大的HFile文件。
小合并并不会进行过期数据的清除工作。
major compaction(大合并)
合并所有的HFile文件为一个大的HFile文件
大合并会清理TTL过期数据、超出设定版本号的数据以及delete标记的数据
一般是手动进行,将参数hbase.hregion.majorcompaction的值设为0,表示禁用major compaction。其默认值为7天,允许上下浮动hbase.hregion.majorcompaction * hbase.hregion.majorcompaction.jitter的值,后者默认是0.5。即[7 - 70.5, 7 + 70.5]
触发条件
一、memstore flush之后
memstore flush之后,都需要对当前Store的文件数量进行判断,一旦大于hbase.hstore.compactionThreshold(现在的版本中这个参数的名字为hbase.hstore.compaction.min)的值(默认3),触发合并操作。该参数一般需要调大。一次minor cmpaction最多合并hbase.hstore.compaction.max个文件(默认值10)。
二、定期compaction
后台线程CompactionChecker定期触发检查是否需要执行compaction,检查周期为:hbase.server.thread.wakefrequency * hbase.server.compactchecker.interval.multiplier,默认值为10s和1000
当文件大小小于参数hbase.hstore.compaction.min.size指定的值的时候(默认128M,单位字节),该文件会被加入到合并队列中,当合并队列中的StoreFile数量超过参数hbase.hstore.compaction.min(更早的版本中这个的参数的名字为hbase.hstore.compactionThreshold)的值(默认3)时会触发compaction操作。一次minor cmpaction最多合并hbase.hstore.compaction.max个文件(默认值10)。
如果一个文件的大小超过hbase.hstore.compaction.max.size的值(默认值LONG.MAX_VALUE),则会被compaction操作排除。
通过hbase.hstore.compaction.ratio参数(默认值1.2)确定大小超过hbase.hstore.compaction.min.size的文件是否需要进行compaction。如果一个文件的大小小于它后面(按文件产生的先后顺序,总是从新产生的文件开始选择即“老文件”)的hbase.hstore.compaction.max个StoreFile的大小之和乘以hbase.hstore.compaction.ratio,则该StoreFile文件也会加入到合并队列中。
三、手动触发major compaction
使用命令major_compact

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
分布式计算 资源调度 Hadoop
HBase表数据的读、写操作与综合操作
HBase表数据的读、写操作与综合操作
93 0
|
7月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
162 0
|
Shell 分布式数据库 Apache
Hbase常用shell操作
Hbase常用shell操作
423 1
|
Java Shell 分布式数据库
HBase高级操作
HBase高级操作
299 0
|
7月前
|
分布式计算 Hadoop Shell
熟悉常用的HBase操作
熟悉常用的HBase操作
166 3
熟悉常用的HBase操作
|
7月前
|
分布式计算 Hadoop Shell
|
5月前
|
DataWorks 数据管理 大数据
DataWorks操作报错合集之在连接HBase时出现超时问题,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
153 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
7月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
139 0
|
7月前
|
SQL 消息中间件 Kafka
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
98 0