高性能数仓建设介绍
网易大数据及高性能数仓建设方案聚焦于解决BI报表、Ad-Hoc、自助分析、取数和数据抽取等场景下的SLA保障问题。主要痛点包括:BI报表实时性要求高(用户耐受不超过5秒)、资源消耗预估不准确、执行计划不合理、元数据过时或未缓存、HDFS及DN波动影响性能等。建设原则包括:收集和持久化历史查询信息,进行可视化展示;基于历史查询的优化(HBO);提升性能和功能(版本升级、执行引擎增强、物化视图等);优化产品化体验(元数据同步、集群管理自动化等)。
HBO实现方案介绍
HBO(History-based Optimization)通过Impala管理服务器收集历史查询信息,包括查询排队耗时、内存消耗、扫描数据量等,并解析profile、timeline和summary中的信息。挖掘历史查询规律包括按分钟粒度分析集群查询次数、性能、内存和IO消耗,识别繁忙和空闲规律进行资源调度,分析队列查询情况,统计查询耗时和成功率等。历史查询信息解析通过SQL注解和内部注解获取查询模板、物化视图改写、内存优化等信息。
HBO优化实践
基于HBO的本地缓存优化包括表元数据缓存和DataCache增强,通过SQL注解和动态白名单驱动元数据异步加载,优化DataCache性能和使用范围,提升缓存命中率。在网易云音乐自助取数场景下,优化后10秒内查询占比从65%提升到91%,提升超过25%。基于HBO的多表物化视图通过生命周期管理和SQL透明改写技术,支持模型和图表物化视图创建,提升查询性能。基于HBO的内存预估优化通过提取SQL模板分析内存预估值和实际值,选择偏差大的模板进行优化,解决预估过大导致内存不足问题。虚拟数仓与资源动态调配通过基于zookeeper namespace或session参数实现灵活高效的数仓形态,混合分组和负载均衡解决资源利用率问题。
未来发展计划
未来计划包括:添加Hive 2.x版本支持;推进更多SQL语法和算子支持;提高物化视图创建自动化程度;与有数BI产品进一步融合;提升HBO内存估算能力;支持更多场景的查询透明重试;支持向量化执行模式;支持通过K8S进行Impala集群部署;实现资源动态调度和负载均衡;开发集群健康状态诊断系统。