美团AdHoc统⼀查询引擎实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团AdHoc统一查询 引擎实践 美团 吴彪
2.
3. 目录 • 美团AdHoc查询引擎演进 • 多引擎架构的痛点 • 统一引擎实践 • 展望未来
4. 美团AdHoc引擎演进 对Presto做兼容 性改进支持更多 Hive语法函数 Hive引擎(MR) 2018 2017 统一引擎智能规则迭 代、自动改写完善, 大规模使用 2020 2019 引入Presto引 擎来满足高性 能查询场景 2021 引入统一引擎架 构,支持自动路 由(Presto/Spark)
5. 应用场景 计算引擎 特点 应用场景 查询使用占比 Hive 稳定性高 性能差 ETL生产 查询 54% Presto 稳定性差 高性能 查询 46%
6. 分析师群体 分析师 上万人使用 大部分为运营、业 务分析师 少部分数据RD 对引擎了解较少
7. 多引擎存在的问题 分析师难以判 断用什么引擎 排查问题思路 不同 多引擎架构 引擎间语法、 函数不兼容 引擎迭代升级 成本高
8. 统一引擎架构设计 优点 解 析 层 执 行 层 •用户接口统一 •各个引擎实现思 路类似 •降低引擎数,减 少维护成本 •排查问题、日志 统一 缺点 •与引擎解析存在 重叠 •还需要维护多个 引擎 •存量查询还需要 解决解析兼容性 •架构设计差异大 权衡 • 对用户收益 统一解析层可达 到统一引擎目标 • 模块依赖 执行层前必定有 解析层,面临同 样问题 • 实现⻛险 MPP/DAG架构 整合⻛险高
9. 统一引擎整体架构 兼容存量SQL语法/函数 智能计算适合引擎 解决引擎间语法兼容性 解决问题分析不统一
10. 解析层实现 • 核心问题:兼容存量Presto/Spark语法的SQL 反射加载 反射加载
11. 引擎预测 • 选择引擎方法 • 引擎参数限制(分区数、数据量) • 一些经验(单表过滤、小数据量计算) • 集群负载 以上条件外的查询怎么办?
12. 引擎预测 • 不同复杂度SQL适合那个引擎: 分类问题 • 机器学习领域常⻅分类算法: 决策树、逻辑回归等 • 训练集如何构造? 历史数据无法知道那个引擎最优 Presto Spark
13. 训练集构建 cost+presto cost+spark
14. 引擎预测 • 结合规则策略和模型预测来覆 盖所有查询 • 集群负载策略避免资源太高影 响性能 • Presto执行失败可自动failover 到spark引擎
15. 方言改写 • 问题 • 语法存在差异 • 引擎间函数不统一、接口不 兼容 • Spark有大量存量用户开发的 UDF
16. 方言改写—语法改写 • 翻译 SQL-> AST -> 方言SQL SparkSQL 方言改写
17. 方言改写—函数 • 对于不同名、不同参数位置的 函数,可通过映射表解决 函数映射 函数映射表
18. 方言改写—函数 • Presto HiveUDF适配器 支持大量存量 SparkUDF codegen生成 Presto SqlFunction实例
19. 异常诊断 提前发现问题 执行慢原因 怎么优化
20. 异常诊断—事前分析 • 语法检查 • 优化建议 • 预估耗时
21. 异常诊断—事中分析 • 为什么查询卡住了? • 为什么进度一直99%? • 什么时候能执行完?
22. 异常诊断—错误归因
23. 效果 30 100% 29 0.91 22.5 75% 15 50% 14 7.5 25% 0 0% 灰度前 智能路由 TP95时延(分钟) 灰度前 0.96 智能路由 成功率
24. 现状问题 用户 技术 自定义函数 重复解析 failover时间⻓ cost粒度粗 语法完全对⻬
25. 未来展望
26. 未来展望 • 完善查询事中分析 • 探索两种计算架构的整合 • 基于列统计信息计算cost • 逻辑执行计划转换路由 • 基于现有引擎实现另一种计算架构
27.
28.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 00:15
浙ICP备14020137号-1 $Carte des visiteurs$