---compact split笔记
compact策略:
在启动region之后,memflush之后,用户compact调用compact
使用策略类needsCompaction方法,hfile数量大于hbase.hstore.compaction.min 和 hbase.hstore.compactionThreshold的最大值数(默认值为3)
major compact触发:(hfile由mem flush生成)
HStore检查是否进行compact时候,现在now - 上次major时间大于hbase.hregion.majorcompaction下次时间间隔 =》 hfile个数大于1 || 只有一个hfile(最早的ts>ttl)整个文件过期 => 进行marjor compact
hbase shell和admin进行major_compact
compact file <= sum(hfile) * hbase.hstore.compaction.ratio 将small compact转为major compact
最小的tts到时间了,进行major compact
compact策略:(一次compact不会compact提供所有的hfile,会选择最好的一组)
ExploringCompactionPolicy
一、选择符合要求的一组hfile进行compact
1.hfile数>=minFiles
2.hfile数<=maxFiles
3.sum(hfile)大小<=hbase.hstore.compaction.max
4.一个hfile大小<sum(hfile)-hfile(不让一个hfile过大)
二、选择最优解(最优的一组hfile)
选择sum(hfile)大小最小的作为第一个组合,选择能合并更多的hfile,并且sum(hfile)大小更小的
split触发:
1.flush之前会检测区域中HStoreFile数目是否超过hbase.hstore.blockingStoreFiles,如果超过且没有等待超时会调用CompactSplitThread.requestSplit(HRegion)
2.flush之后会调用HRegion.checkSplit()检测是否需要split,如果需要则调用CompactSplitThread.requestSplit(HRegion)
3.compact之后会调用CompactSplitThread.requestSplit(HRegion)
4.hbaseadmin split table or region
split策略:
IncreasingToUpperBoundRegionSplitPolicy
(init)initialSize = hbase.increasing.policy.initial.size(预先设置初始值大小) 或hbase.hregion.memstore.flush.size (memflush大小)
获取this.region所在表的所有region数 getCountOfCommonTableRegions 为regioncount
当regioncount在0到100之间,取配置hbase.hregion.max.filesize(默认10G)或initialSize*(regioncount^3)的最小值 否则取配置hbase.hregion.max.filesize(默认10G)
如,只有一个region,128*1^3=128M
之后: 128*2^3=1024M
128*3^3=3456M
128*4^3=8192M
128*5^3=16000M(15G) => 10G 当有5个region就可以用配了
结论:
compact
无法避免,
增大hbase.hstore.compaction.min 和 hbase.hstore.compactionThreshold可以减少compact频率,但是延迟compact时间,反之亦然
通过减少生成hfile数量减少compact,
通过设置较大的hbase.hregion.majorcompaction可以减少marjor compact频率
可以定时人为进行mar compact
split
可以避免,split可以只设置hbase.hregion.max.filesize很大就停止了region split操作
相关推荐
在HBase的运维中,理解其内部工作原理,如RegionServer、Zookeeper的角色,以及性能调优策略,如合理设置Region大小、监控系统状态等,都是至关重要的。同时,HBase与其他大数据组件(如Hadoop MapReduce、Hive、...
本文档旨在详细介绍HBase性能测试的设计文档和实践经验,涵盖了HBase性能测试需要注意的一些参数设置和测试用例。下面是从该文档中提炼的相关知识点: 1.1 Pre-Creating Regions 在HBase中,默认情况下,在创建表...
HBase Shell是HBase提供的一个交互式命令行工具,用于管理和操作HBase数据库。在这里,我们将深入探讨HBase Shell的各种命令。 1. **创建表(create)**: 使用`create '表名', '列族'`命令来创建表,如`create '...
《HBase概述——HBase的存储...综上所述,HBase的存储模型通过LSM树和相关机制,实现了高写入性能和数据一致性,但也需要权衡读取效率和资源管理。理解并优化这些机制,对于提升HBase在大数据环境中的表现至关重要。
│ Hbase性能优化-flush、compact、split │ Hbase性能优化-配置snappy压缩 │ Hbase中索引的介绍 │ PHoenix的编译及安装部署 │ PHoenix与Hbase表的关联使用 ├─03_笔记 │ [案例:Hbase的设计及企业优化].txt ├...
本实践详解将深入探讨HBase的安装、常用命令、优化策略以及典型应用场景,以帮助读者更好地理解和运用这一强大的数据存储解决方案。 一、HBase安装 HBase的安装涉及到多个步骤,首先需要安装Hadoop,确保HBase与...
其次, Compact与Split机制是HBase内部数据管理的核心。数据更新首先写入WAL日志和内存的MemStore,当MemStore达到阈值时,会触发flush操作,生成StoreFile。当StoreFile数量过多或大小超过阈值,系统会进行Major ...
- **tools**:提供了一些实用工具命令,如`compact`(压缩)、`flush`(刷新缓存)和`split`(分裂region)等。 - **replication**:用于复制和管理HBase的复制流,包括`add_peer`、`remove_peer`等。 了解这些基本...
* Region拆分和合并:预建分区可以避免自动split,提高HBase的响应速度 * Region均衡:避免出现Region热点现象,按照table级别进行balance * 尽量只用1-2个列族:减少列族的数量可以提高HBase的性能 * 定期建表:...
当MemStore达到一定大小时,数据会被Flush到StoreFile,并在必要时进行Compact和Split操作。HLog作为WAL,保证数据在写入HBase前先写入日志,以防数据丢失。 HFile是HBase的存储格式,有V1、V2和V3三个版本,V2引入...
手动调用`split`和`major_compact`命令可以更精确地控制拆分和压缩时机,降低对系统的影响。 4. **预拆分region** 预拆分策略在创建新表时就分配多个region,避免单个region过大。在创建表时,可以指定预拆分行键...
大Region,则不太适合经常split和compaction,因为做一次compact和split会产生较长时间的停顿,对应用的读写性能冲击非常大。 HBase性能调优是一个非常复杂的过程,需要根据实际应用场景进行调整。通过调整...
- ADMIN(‘A’):管理员权限,允许对表进行compact(合并)、split(分割)、balance(均衡分布)等操作。 HBase ACL使用举例说明了如何通过JavaAPI和shell命令行方式管理权限,例如,可以使用shell命令行方式...
9. **flush、compact、split机制**:合理设置Memstore的阈值,控制数据刷新、合并和分割的操作,确保HBase的高效运行。 YARN调优涉及到的任务调度、资源分配等,如调整Container的大小、内存分配策略等,目的是最大...
compact命令和major_compact命令分别用于执行局部压缩和全局压缩操作,优化存储空间的利用。 6. 导出表属性到本地文件:使用describeInJson命令可以将当前表的属性导出为本地的JSON格式文件,方便进行进一步的分析...
3. Region的split和集群管理: Region的split是指将一个region分成多个region的过程。集群管理是通过ZooKeeper+hmaster+hregionserver来实现的。 4. 去掉Reduce阶段: 在某些场景下,去掉Reduce阶段可以提高计算...