首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hbase compaction 源码分析一:compaction 概况分析

compactionChecker用于周期性地检查当前是否有compact请求,实现类是ScheduledChore检查周期由参数threadWakeFrequency控制,默认值是10s,也可以在参数hbase.server.thread.frequency...一次Minor Compaction的结果是更少并且更大的StoreFile。...另外,一般情况下,Major Compaction时间会持续比较长,整个过程会消耗大量系统资源,对上层业务有比较大的影响。...从chore方法中可以直观的看到major compact是通过isMajorCompaction()方法判断的这是很多判断条件的合成,其中最为重要的一个是hbase.hregion.majorcompaction...因此,通过设置hbase.hregion.majorcompaction = 0可以关闭CompactionChecke触发的major compaction,但是无法关闭用户调用级别的majorcompact

2K10
您找到你想要的搜索结果了吗?
是的
没有找到

Hbase compaction 源码分析二:详细 compaction 过程

因为major compact很影响hbase的读写性能,所以在不同版本是否major compact其实社区一直都在寻求优化,可根据需要选择不同的实现类RatioBasedCompactionPolicy...有关不同Policy的算法性能影响及适合场景可参考文章: http://hbasefly.com/2016/07/25/hbase-compaction-2/ hbase1.1.3版本使用的实现类是RatioBasedCompactionPolicy...,查看类图)的compaction方法,并返回compaction后的新hfile文件 3.根据hbase.hstore.compaction.complete判断是否做一些compaction的complete...对hbase的读写性能均有一定影响,有关对性能影响以及相关调优可参考: http://hbasefly.com/2016/07/13/hbase-compaction-1/ http://hbasefly.com.../2016/07/25/hbase-compaction-2/

1.9K20

深入理解 HBase Compaction 机制

今天要探讨的Compaction机制就是HBase架构上做的一个重要优化,其实关于HBase的架构设计、Flush&Compaction等文章已经多不胜数了,本文也是主要参考HBase官网、社区的一些文章总结...Compaction 分类 HBase Compaction分为两种:Minor Compaction 与 Major Compaction,通常我们简称为小合并、大合并。下面是一个简单示意图 ?...HBase每次flush之后,都会判断是否要进行compaction,一旦满足minor compaction或major compaction的条件便会触发执行。...5.hbase.hstore.compaction.ratio 这个ratio参数的作用是判断文件大小 > hbase.hstore.compaction.min.size的StoreFile是否也是适合进行...关于HBase compaction分配给largeCompactions还是smallCompactions线程池受参数hbase.regionserver.thread.compaction.throttle

9.1K43

Hbase Region Split compaction 过程分析以及调优

Compaction 通过上面的分析知道 Hbasecompaction 在 CompactSplitThread 中分 longCompation 和 smallCompaction,而触发...控制,默认是 10 秒,而是否决定 compaction 操作则需要根据 compaction 的策略而定,hbasecompaction 策略即是挑选需要合并的 hfile,挑选的原则是文件数不能太多...hfile 的个数是否大于参数 hbase.hstore.compaction.min 设定的值,该值默认为 3,当 compaction 请求到达 CompactSplitThread 后具体是放入...;其二也有可能是用户在执行完 alter 操作之后希望立刻生效,执行手动触发 major compaction;其三是 HBase 管理员发现硬盘容量不够的情况下手动触发 major compaction...用户可以配置参数 hbase.offpeak.start.hour 和 hbase.offpeak.end.hour 来设置高峰期  (2)当前所剩候选文件数 <= hbase.store.compaction.min

4.7K11

page compaction原理

为了解决内存碎片问题,linux内核引入了page compaction技术,俗称页块整理。...page compaction的步骤: 代码中运行两个独立分扫描队列,第一个扫描队列从zone的底部从下往上扫描,一边扫描一边讲可以移动(Moveable)的页放入到此链表中,可以将此链表称为迁移扫描器...当迁移扫描器和空闲扫描器相遇之后,就意味着page compaction结束了。剩下的工作就是将迁移扫描器的page copy到空闲扫描器,然后接触迁移扫描器的页面对应关系。...x > /proc/sys/vm/compact_memory来启动page compaction的动作,启动后内核线程kcompactd*就会启动来进行页面整理的 此时当我在ubuntu上执行echo...1 > /proc/sys/vm/compaction_memory的时候,ubuntu就会启动kcompactd0内核线程来执行页面整理的。

1.6K20

LevelDB 完全解析(11):Compaction

Compaction 的作用 因为 LevelDB 的增删改都是通过追加写来实现的,所以需要通过后台线程的 compaction 来: 清理过期(旧版本或者已删除)的数据。 维护数据的有序性。...Major Compaction 每次 compaction 结束,更新 manifest 之后,都会调用 VersionSet::Finalize 计算下一次要进行 major compaction...每次 major compaction 开始时,调用 VersionSet::PickCompaction 计算需要进行 compaction 的 SSTable。...Compaction 的问题 Compaction 会对 LevelDB 的性能和稳定性带来一定影响: 消耗 CPU:对 SSTable 进行解析、解压、压缩。...这种做法带来一个问题:compaction 的速度应该控制在多少?Compaction 的速度如果太快,会影响系统性能;Compaction 的速度如果太慢,会阻塞写请求。

1.6K20

Influxdb中的Compaction操作

Influxdb中的Compaction操作 Compaction概述 Influxdb的存储引擎使用了TSM文件结构,这其实也是在LSM-Tree基础针对时序特点作了改进,因此其与LSM-Tree类似...WAL和SSTable; 既然是类似LSM-Tree,也需要Compation, 将内存MemTable的数据持久化到磁盘,将磁盘上的若干文件merge,以便减少文件个数,优化读效率; Influxdb的Compaction...通常来说需要两步: 生成一个compaction计划,简单来说就是生成一组可以并行compaction的文件列表; 针对一组tsm文件来作compation; Compaction计划的生成 CompactionPlanner...[]CompactionGroup) FullyCompacted() bool // ForceFull causes the planner to return a full compaction...概述 我们先来简单讲一下这个compaction的过程,这类似于归并合并操作,每个tsm文件中的keys在其索引中都是从小到小排序的,compaction时就是将多个文件中的相同key的block合并在一起

1.9K30

memory compaction原理、实现与分析

一 memory compaction简介 随着系统的运行,经过不同用户的分配请求后,页框会变得十分分散,导致此段页框被这些正在使用的零散页框分为一小段一小段非连续页框,这使得在需要分配内存时很难找到物理上连续的页框...在一个已经运行了一段时间的系统上会产生大量的不连续的page, 要想找到符合这些高阶(high-order)条件的内存空间非常具有挑战性,memory compaction的作用就是解决high-order...二 memory compaction原理 内存碎片整理以pageblock为单位。...err = migrate_pages(&cc->migratepages, compaction_alloc, compaction_free, (unsigned...四 memory compaction总结 分析过reclaim内存回收代码就会发现,在内存回收当中同样会wakeup_kcompactd触发compaction碎片整理机制,在kswpad异步内存回收当中存在同样的操作

94720

从原理到参数解析,HBase 刷写与合并机制介绍

HBase 是目前主流的 NoSQL 数据库,是一个高可靠、高性能、高伸缩的分布式 KV 存储系统,本文讲解 HBase 两个核心机制——刷写(Flush)与合并(Compaction),重点介绍其原理及参数配置建议...3、Compaction 类型、触发时机和参数 从上面分析我们知道,HBase 会定期执行 Compaction 合并 HFile,提升读性能,其实就是以短时间内的io消耗,换取相对稳定的读取性能。...Compaction 触发时机 概括的说,HBase 会在三种情况下检查是否要触发 Compaction,分别是 MemStore Flush、后台线程周期性检查、手动触发。...HBase 每次Flush 之后,都会判断是否要进行 Compaction,一旦满足 Minor Compaction 或 Major Compaction 的条件便会触发执行。...Compaction 核心参数 和上面类似,这里总结了几个和 Compaction 有关的重要参数,并给出调整建议: 1、hbase.hstore.compaction.min 默认值 3,一个 Store

82840

HBase 写吞吐场景资源消耗量化分析及优化

三、Flush & Compaction 上一节中,介绍了 HBase 的写路径,其中 HFile 是 HBase 数据持久化的最终形态, 本节将介绍 HBase 如何生成 HFile 和管理 HFile...要回答这个问题之前,要先了解现在 HBase 默认的 compaction 的文件选取策略,这里不展开,只做简单分析,MinorCompaction 选择的文件对象数目,一般处于 hbase.hstore.compaction.min...(默认 3)和 hbase.hstore.compaction.max(默认 10)之间, 总文件大小小于 hbase.hstore.compaction.max.size(默认 Max), 如果文件的...Size 小于 hbase.hstore.compaction.min.size(默认是 flushsize), 则一定会被选中; 并且被选中的文件 size 的差距不会过大, 这个由参数 hbase.hstore.compaction.ratio...所以,在 Compaction 没有积压的情况下,每次 compaction 选中的文件数目会等于 hbase.hstore.compaction.min 并且文件 size 应该相同量级, 对稳定的表

1.1K10

Hbase1.2.0-cdh5.16.2使用PREFIX_TREE编码导致集群压缩队列异常

本篇文章大概1700字,阅读时间大约5分钟 Hbase1.X版本中PREFIX_TREE作为BlockEncoding存在bug,会造成RegionServer节点compaction queue持续升高...Compaction,并且压缩队列持续升高并无下降趋势 ?...2.Compaction异常原因定位 检查异常节点写入 cat /var/log/hbase/hbase-cmf-hbase-REGIONSERVER-dn3.changan.com.cn.log.out...查了一下prefixtree是Hbase在0.96版本中引入的新的BlockEncoding算法,检索Hbase issue后发现了prefixtree会造成compaction阻塞,和bug报告中的情况一毛一样...3.故障原因分析 某业务上线的时候,新建的几张表采用了PREFIX_TREE编码,根据HBASE-12959,该Blocking Encoding会造成compaction线程阻塞,其他表的compaction

68710
领券