贝壳 Kylin:性能挑战、HBase优化与百万级查询应对策略

1 下载量 31 浏览量 更新于2024-08-27 收藏 1.25MB PDF 举报
"Kylin在贝壳公司的大规模应用与性能挑战及HBase优化实践分享 自2017年起,Kylin成为贝壳公司的核心OLAP(在线分析处理)引擎,支撑着庞大的数据分析需求。贝壳公司部署了超过100台Kylin实例,拥有800多个Cube,存储规模达到300多TB,其中依赖两套HBase集群,由30多个节点构成,日均查询量高达2000万次。相较于2018年的100多万次请求,这个数字在短短两年内增长了19倍,对查询响应速度的要求极高,贝壳设定了99.7%的3秒以内响应率,实际已达到99.8%。 在如此高并发的场景下,Kylin面临着严峻的性能挑战。例如,构建Cube过程中,关键表的某Region会出现不可访问,导致构建失败,如右上角所示HBase meta表的访问问题。查询阶段,数据表Region的访问延迟甚至会导致查询超时,右下角的日志记录了这种现象。此外,随着Region数量的急剧增加,每个节点承载的Region数量过多,严重影响了HBase的建表和删表操作效率,甚至在凌晨构建时出现卡顿,清理表的操作也需要花费较长的时间。 针对这些问题,团队采取了一系列措施进行优化。首先,通过删除无用的表和Region,以减轻HBase的负担。初始状态下,每台机器平均有1万个以上的Region,这对系统的稳定性和性能产生了负面影响。因此,他们决定采用非常规手段删除了10万多的Region,尽管这意味着频繁的清理操作。 其次,调整了清理周期,从每周一次变为每日一次,并结合Kylin的定期Cube合并策略,每周合并一次Cube来减少HBase中的表数量,进而减少Region数量。这种方法将原本超过16万的Region数量降至不足6万,显著改善了系统状况。 升级HBase版本至1.4.9,引入RSGroup功能,旨在提高重点表和数据表计算的隔离性,降低它们之间的干扰。同时,关闭了HBase的自动平衡功能,只在夜间进行必要的调整,以避免对查询性能的干扰。 这些优化措施有效地缓解了Kylin在贝壳大规模使用环境下的性能瓶颈,为公司提供了稳定、高效的分析能力。然而,尽管取得了显著的进步,构建时重点表的Region访问问题依然存在,说明持续的监控和优化仍然是保持系统高性能的关键。通过分享这些实践经验,贝壳希望为其他使用Kylin的社区成员提供有价值的参考和启示。"