记一次HBase bulkload后,上万小文件查询性能的优化实践

本文介绍了在HBase中,由于小文件过多导致compaction效率低下,进而影响查询性能的问题。通过调整优化代码和配置,如限制compact的最小大小,增加compaction队列管理和监控,优化bulk load后的compact机制,配置合理的compact线程数量和周期,成功提升了compact效率,减少了文件数量,从而显著改善了查询请求的处理时间,将p99延迟从14000ms降低到120ms。

背景

业务导入的小文件数量过多,降低了compaction的效率:
经统计,业务有至少60%的文件是小于100B的小文件,且每天每台机器4小时内平均新增1万个文件,最高2万个。
大部分compaction的文件总大小仅几十KB。

优化措施

根据分析的原因,进行了代码和配置的双重优化:

  1. 限制stripe和L0触发compact的最小大小,提升compact的效率:
    • 避免频繁进行KB级别大小的compaction;
    • 避免过小的stripe频繁参与compaction;
  2. 增加的compaction队列的管理:
    • 增加队列监控,避免同一store重复加入队列浪费计算资源;
    • 增加队列长度限制,避免过多store等待compaction;
  3. 优化bulk load后触发compact的机制:避免重复加入到compaction队列;
    HBASE-26249 Ameliorate compaction made by bulk-loading files
  4. 配置合理的compact线程数量,避免compact占用过多的系统资源。
    hbase.regionserver.thread.compaction.large
    hbase.regionserver.thread.compaction.small
  5. 配置合理的compact周期,及早触发compaction。(像业务这种小文件很多的模式,需要频繁触发compaction以减少文件数量,最终提升查询性能。但是同时需要避免compact线程长时间占用计算资源。)
    hbase.server.compactchecker.interval.multiplier=400

效果

从文件数量指标和请求处理时间来衡量

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值