HBase bulkload后scan性能问题如何优化

本文探讨了HBase bulk load后扫描性能下降的问题,指出文件数量影响查询性能,尤其是在bulk load后CPU负载增加。优化方向聚焦于提升bulk load的compaction效率。社区提出在bulk load后主动触发compaction,但可能导致CPU负载过高。为解决此问题,提出了改进方案,即在bulk load后检查region是否需要compaction,并将其放入队列按优先级调度。
摘要由CSDN通过智能技术生成

问题简介

Bulk load主要面向需要大批量的向HBase导入数据的场景。这种方式是先生成HBase的底层存储文件 HFile,然后直接将这些 HFile 移动到HBase的存储目录下。它相比调用HBase的put API添加数据,处理效率更快并且对HBase 运行影响更小。
业务使用bulkload+scan的模式非常普遍,往往是一个离线任务bulkload一批文件后,就启动另一个离线任务去读所有bulkload过的数据。普遍存在的问题是,bulk load后scan全表时请求处理慢。
且这种情况同时可能伴随高CPU load,导致整个RS的全部region请求都受影响。

优化方向

bulk load的最后阶段,通过RPC向region导入文件时,由于只是进行非常轻量级的文件移动,所以对于region内部来说,短时间内新增了大量导入的文件。
进行查询时,对于单region来说,需要对其内部所有的文件来进行解压和堆排序。
所以,文件的数量大小,是这里影响性能的关键因素。根据线上现象观察,单Region 上千级别文件的查询,可以引起全表扫描时,cpu busy的百分比显著上升。
HBase减少文件数量的方式只有compaction。所以,提升bulk load过程中的compaction效率,可以缓解scan时的性能问题。
但是注意单次compact的文件数量不能过多,比如我们曾经遇到使用StripeStoreEngine时,单次compact全部L0的文件,而bulkload又是所有文件先进L0,就造成了单个compact任务选中上万文件而长时间无法结束的问题。

社区方案

HBase

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值