前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HBase原理 | HBase Compaction介绍与参数调优

HBase原理 | HBase Compaction介绍与参数调优

作者头像
大数据技术架构
修改2020-05-29 21:55:58
2.8K0
修改2020-05-29 21:55:58
举报

我们知道,数据达到HBase服务端会写WAL-写Memstore,然后定期或满足一定条件时刷写磁盘生成一个HFile文件,随着时间推移生成的HFile会越来越多,将会影响HBase查询性能,同时会对HDFS造成一定影响。因此HBase会定期执行Compaction操作以合并减少HFile数量。

1.两种合并

HBase中Compaction分为两种。Minor Compaction称为小合并,主要是选取一些小的、相邻的HFile将他们合并成较大的HFile,并删除HFile中的过期数据。

Major Compaction称为大合并,会将一个列族下的所有HFile合并成一个大的HFile,同时删除过期数据、已删除数据(打了Delete标记的)、版本过大的数据等三类无效数据。

2. 参数调优

1).hbase.hstore.compaction.min

默认值 3,一个列族下的HFile数量超过该值就会触发Minor Compaction,这个参数默认值小了,一般情况下建议调大到5~10之间,注意相应调整下一个参数。(旧版本中该参数是hbase.hstore.compactionthreshold)

2).hbase.hstore.compaction.max

默认值 10,一次Minor Compaction最多合并的HFile文件数量,这个参数基本控制着一次压缩即Compaction的耗时。这个参数要比上一个参数hbase.hstore.compaction.min值大,通常是其2~3倍。

3).hbase.regionserver.thread.compaction.throttle

HBase RS内部设计了两个线程池:large compactions与small compactions,用来分开处理Compaction操作,这个参数就是控制一个Compaction应该交由哪一个线程池处理,默认值2 * hbase.hstore.compaction.max * hbase.hregion.memstore.flush.size,即2*10*128M=2.5G,如果待合并文件的总大小大于该值则交给large compactions线程池处理,否则交给small compactions线程池处理。一般建议不调整或稍微调大。

4).hbase.regionserver.thread.compaction.small

默认值 1,RS中small compactions线程池的大小。一般建议调整到2~5,不建议调太大,否则可能会消费过多的服务端资源得不偿失。

5).hbase.regionserver.thread.compaction.large

默认值 1,RS中large compactions线程池的大小。调整建议同上。

6).hbase.hstore.blockingStoreFiles

默认值 10,一个列族下HFile数量达到该值就会阻塞写入,等待Compaction完成。生产环境中默认值太小了,一般建议设置大点比如100,避免出现阻塞更新的情况。

7).hbase.hregion.majorcompaction

默认值 604800000,就是7天,这是Major Compaction周期性触发的时间间隔。因为通常Major Compaction持续时间长、资源消耗大,建议关闭HBase Major Compaction,参数设为0,并在业务低峰期手动执行。

微信扫一扫,关注我
微信扫一扫,关注我
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.两种合并
  • 2. 参数调优
    • 1).hbase.hstore.compaction.min
      • 2).hbase.hstore.compaction.max
        • 3).hbase.regionserver.thread.compaction.throttle
          • 4).hbase.regionserver.thread.compaction.small
            • 5).hbase.regionserver.thread.compaction.large
              • 6).hbase.hstore.blockingStoreFiles
                • 7).hbase.hregion.majorcompaction
                相关产品与服务
                TDSQL MySQL 版
                TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档