写点什么

Presto 在 B 站的应用

  • 2025-07-04
    浙江
  • 本文字数:1096 字

    阅读完需:约 4 分钟

Presto在B站的应用

Presto 在 B 站的应用

最前面有一层 dispatcher,使用了 Linkedin 开源的 coral 对语法做分析,转换

根据不同的 SQL 类型,转到不同的引擎

spark 用了 kyuubi 做了前端,实现多租户、高可用

presto 也是类似,前面有一个 gateway,实现高可用

另外所有的引擎都接入了 ranger,做鉴权

改造点

  • 所有的请求经过 gateway 到 presto

  • 探测 coordinator 状态,根据作业 ID 来选择机房调度

  • 对 query 做解析,根据依赖的表和分区,选择合适的机房

  • 探测 coordinator 负载,内存、作业堵塞,来选择负载均衡

coordinator 多活改造

  • 使用 redis 作为持久注册

  • coordinator 启动时注册分布式锁

  • worker 读取 redis 获取对应的 coordinator

  • gateway 随机选择一个 coordinate,或者一直使用这个会话

稳定性方面

  • 资源隔离方面,使用了 lable,根据已经配置好的 lable,动态选择对应的集群

  • 同样的请求第二次路由,就会找低负载的集群

  • 另外有惩罚措施,会占用过大的请求,会将惩罚下发到所有 worker 节点

  • gateway 会解析 SQL,替换表达式提取通用 MD5 特种,如果类似的请求出现,会做拦截,或者 kill

  • worker 端根据 MBean,kill 掉超过一定比例的 task

可用性方面

  • spark/hive 语法兼容

  • 隐式转换,hive UDF 兼容,insert overwrite table

  • 支持更多的数据源,多数据源联合查询

  • HDFS 上的 jar,动态加载 catalog

  • Job History 服务

  • 监听发布系统 kill -15 信号,将自身状态改为非 activ,等完成任务再退出,实现无损发布

性能方面

  • 增加 alluxio

  • 开发 cache invalidate 服务,监听 hive meta event,根据分区路径删除无效缓存

  • 查询结果做 MD5 提取,放到 redis,如果有 DDL 事件,根据分区,做缓存失效处理

  • 高版本的 Dynamic Partition Pruning,根据这种思路重现实现改造的

多机房架构

  • 用户侧统一接入 Presto gateway,每个机房部署独立 集群

  • 访问单张表:调度到数据所在机房

  • 多表在同一机房,作业路由到数据所在机房

  • 多表在不同机房,路由到数据量较大的表所在机房,较小的表限流读

  • 实现跨 IDC 的计算下推

  • 多表访问时,将子查询下推第二机房,再跟主机房合并

  • 通过血缘关系找出跨机房热分区,提前预加载到缓存

参考

  • 官网

  • github

  • PrestoCon Day 2022 youtub

  • Presto 在 B 站的实践

  • Presto 在字节跳动的内部实践与优化(实践篇)

  • Presto 在字节跳动的内部实践与优化(优化篇)

  • Presto 实现原理和美团的使用实践

  • Presto 在滴滴的探索与实践

  • 一文看懂 VLDB 22 技术趋势及精选论文

  • Presto:Meta 十年数据分析之旅

  • Speed Up Presto at Uber with Alluxio Local Cache

  • Engineering Data Analytics with Presto and Apache Parquet at Uber

  • Presto at Bytedance youtub

  • Data Lake Analytics: Alibaba’s Federated Cloud Strategy

  • Forecasting SQL query resource usage with machine learning

用户头像

一站式多云AI原生数智平台 2022-12-05 加入

数新智能是一家专注于一站式多云AI原生数智平台和数据价值流通的服务商。公司自主研发的核心产品主要包括赛博数据平台CyberData、赛博智能平台CyberAI、赛博数智引擎CyberEngine、AI一体机CyberGPT。

评论

发布
暂无评论
Presto在B站的应用_数新网络官方账号_InfoQ写作社区