`

hbase compact和split策略

阅读更多

---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写性能优化策略

    HBase写性能优化策略HBase写性能优化策略HBase写性能优化策略

    基于HBase数据分类的压缩策略选择方法

    为解决现有的HBase数据压缩策略选择方法未考虑数据的冷热性,以及在选择过程中存在片面性和不可靠性的缺陷,提出了基于HBase数据分类的压缩策略选择方法。依据数据文件的访问频度将HBase数据划分为冷热数据,并限定具体...

    hbase安装和使用

    本资源为hbase的安装和使用,内含hbase安装工具包,hbase的安装说明,hbase的使用说明 。

    hbase备份和数据恢复

    hbase备份和数据恢复,hbase与hive的互导,hbase和hdfs互导。

    HbaseTemplate 操作hbase

    java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行

    Hbase的region合并与拆分

    HBase的region split策略一共有以下几种: 1、ConstantSizeRegionSplitPolicy 0.94版本前默认切分策略 当region大小大于某个阈值(hbase.hregion.max.filesize=10G)之后就会触发切分,一个region等分为2个region。 ...

    hbase原理和设计

    hbase原理和设计,包括二级索引,rowkey设计,常见的坑.

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架

    hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...

    pinpoint的hbase初始化脚本hbase-create.hbase

    搭建pinpoint需要的hbase初始化脚本hbase-create.hbase

    hive和hbase整合

    hadoop jar /usr/lib/hbase/hbase-0.90.4-cdh3u3.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY, catgyname,catgyid1,catgyname1,catgyid2,catgyname2,catgyid3,catgyname3,catgyid4,catgyname4,catgyid5,...

    HBase最佳实践-读性能优化策略

    HBase最佳实践-读性能优化策略,HBase最佳实践-读性能优化策略

    HBase数据库设计.doc

    HBase的模式Schema设计的一些概念和原则 5 1)模式的创建与更新 5 2)列族的数量 6 3)行键设计RowKey 6 5. HBase的拓扑结构是什么? 7 1)拓扑结构 7 2)HBase与ZooKeeper的关系是什么? 7 3)HBase的内部结构管理...

    基于集群的HBase安装和配置

    文档是我自己一步步完成实验写成的,给初学大数据的朋友共享一下希望能有所帮助

    HBase(hbase-2.4.9-bin.tar.gz)

    HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...

    HBase负载均衡分析及优化策略

    HBase作为Hadoop分布式开源云数据库因其高可用性等优势越来越受到青睐,但是随着大量数据的注入,HBase对负载的分配状况将直接影响到整个集群的性能优劣.针对原有负载均衡算法在负载分配过程中可能产生的负载严重不...

    HBASE架构和原理解析

    本文档图文并茂地详细的描述了HBASE列式数据的架构和原理,是HBASE入门不错的的资料

    Hbase资源整理集合

    HBase的操作和编程.pdf HBase Cpressr优化与实验 郭磊涛.pdf null【HBase】Data Migratin frm Gri t Clu Cmputing - Natural Sienes .pdf 分布式数据库HBase快照的设计与实现.pdf 【HBase】Distribute Strage f ...

    hbase和zookeeper配置

    hbase和zookeeper的详细配置

    hbase-shell批量命令执行脚本的方法

    major_compact('t_abc') disable 't_abc' drop 't_abc' create 't_abc', 'info' EOF 以上这篇hbase-shell批量命令执行脚本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发...

Global site tag (gtag.js) - Google Analytics