- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- <iframe src="https://www.slidestalk.com/slidestalk/571916?embed&video" frame border="0" width="640" height="360" scrolling="no" allowfullscreen="true">复制
- 微信扫一扫分享
Sqlscan在B站的实践-张巍
张巍-B站离线计算负责人
14年java相关行业经验,7年大数据领域的工作经验。职位生涯中担任过测试,产品,研发,管理等多个角色。对离线存储,计算,调度,平台工具有大量的实战经验。
分享介绍:
Sqlscan是一款SQL静态扫描工具,在数据治理的环节中充当着事前发现SQL故障点,同时支持事前血缘的识别,成本的估算等能力。
展开查看详情
1 .B站大数据治理工具实践️ 张巍 - bilibili离线计算负责人 1
2 .目录 CONTENT 大数据简介 元仓与诊断 SQLSCAN 总结与未来规划 2
3 .01 大数据简介 张巍 3
4 .大数据简介 4
5 .离线计算简介 5
6 .02 大数据元仓与诊断 张巍 6
7 .元仓-背景 主要背景: • 缺乏对集群资源使用情况的观测在大数据引擎 运行时 • 缺少作业维度的统计信息,难以推动用户治理 作业 7
8 .元仓-背景 多维度展示: • 集群维度展示集群视角下的资源容量模型 • 队列维度展示队列实时的水位 • query 维度主要用来抓取资源消耗过大的作业 进行治理 8
9 .元仓-技术选型 目前监控架构: • 数据源层:通过exporter暴露集群指标 • 数据归集处理层:主要通过Prometheus server 发送Http pull请求从数据源层拉取并存储监控 的指标 • 数据应用层:展示指标数据及对异常数据做告 警 9
10 .元仓-技术选型 技术选型:StarRocks VS Clickhouse 功能 StarRocks Clickhouse 标准SQL 支持标准SQL, 不完全支持 Prometheus缺点: 兼容MySQL协议 • 存储数据量有限,不适合较久历史数据的回放 性能 读写性能好 单机性能强悍 作为一个基于度量的系统,更多的是趋势性的监控, 高并发查询 全面向量化,提 不支持高并发, 难以做到明细数据的存储与加工 高并发查询量 官方推荐QPS为 100 大数据元仓特点: Join能力 支持 几乎不支持,一 般使用大宽表 能够实时观测集群指标数据 运维 不依赖第三方组 依赖Zookeeper, 件,运维容易 运维成本高 • • 能够在多维分析中实现亚秒级查询返回 社区 社区活跃度高, 开源社区良好 能够支持复杂计算逻辑 问题回复快 • • 能够对半年甚至更久数据进行回放 10
11 .元仓-架构设计 元仓架构图: • Collector 是一个可以嵌入应用程序也可以独立 启动的java-agent • kafka 的数据通过Routine laod/Flink 实时的写 入StarRocks • Dataservice 是一套数据服务的前后端用来提取 指标进行展示 11
12 .元仓-线上效果 元仓大盘: • 集群/队列容量模型 • 下钻App错误分布 12
13 .元仓-线上效果 元仓大盘: • 多维度top app展示 • App明细->诊断系统 13
14 .诊断-背景 诊断系统: • 补齐完善元仓中任务下钻的指标 • 推动任务治理减少资源浪费 • 减轻值班人员压力 14
15 .诊断-架构设计 诊断系统:(借鉴oppo罗盘思路进行重写) • 引擎采集层 • 数据加工层 • 数据可视化 15
16 .诊断-线上效果 Spark 诊断大盘 • 基于空间维度的诊断作业大盘 • 基于组件维度的诊断作业大盘 16
17 .诊断-线上效果 Spark 诊断大盘 • 周期作业维度的资源消耗趋势指标 • 周期作业维度的异常指标展示 17
18 .诊断-线上效果 诊断系统-大表扫描分析 • 解析计划数分析scan数据量 • 对大表scan给出诊断建议 18
19 .诊断-线上效果 诊断系统-数据倾斜分析 • 发现数据倾斜的task 节点 • 提供采样的数据倾斜字段(ing) 19
20 .诊断-线上效果 诊断系统-SQLSCAN预警 • 存在代码质量风险 • 存在查询性能的风险(笛卡尔积) 20
21 . 诊断-场景展示 诊断系统-内存浪费 • 内存治理直接给出优化参数 • 打通治理平台 21
22 .03 SQLSCAN介绍 张巍 22
23 .SQLSCAN背景 SQLSCAN 是一款SQL领域静态代码扫描的工具 它 将任务开发中遇到的各种问题如: • 用户SQL的质量差 • 用户运行性能低 • 不遵守ANSI规范, 总结后形成规则,并通过系统及研发流程保障,事 前解决故障隐患 23
24 .SQLSCAN架构设计 SQLSCAN 分别由解析, 编译, 服务三个模块构成 • 解析层主要是使用Antlr4解析不同引擎语法文 件 • 编译层主要是基于上一步产生的AST结合不同 引擎所需要的元数据插件进行AST的遍历 • 服务层作为定制化功能比较集中的模块主要提 供了以下4点特性: • 规则拦截 • 成本分析(计算SQL扫描多少数据,SQL中涉及 到的算子,产生多少费用) • 表的访问权限控制(对接公司内部权限系统) • 字段血缘(输出字段和输入字段的血缘传递关系) 24
25 .SQLSCAN-关键技术 字段血缘读取和动态计算 • 单SQL字段继承血缘 • 上下文感知的字段血缘 25
26 .SQLSCAN-关键技术 SQL的成本估算 • 基于 column statistic • hms的ddl 事件触发分区/表级别的字段statistic 分析 • 基于事后血缘的字段访问热度统计字段statistic • 算计 + column statistic 加权平均 • 算子包括 group by, join 等 26
27 .SQLSCAN-线上效果 成本分析 规则拦截 字段检测 ANSI检测 27
28 .SQLSCAN-线上效果 目前SQLScan已经稳定上线8个月, • 日均支撑36万次的查询诊断 • 每日拦截SQL量2万 • 平均执行时间300ms 有效保障了线上数据和SQL的高质量产出 28
29 .SQLSCAN-场景展示 01 血缘地图 02 归因/影响分析 • 手动探查 • 批量血缘查询 • 可视化分析 • 信息聚合 • 链路分析 • 拉群&通知 29