Presto 在 FreeWheel 广告平台下的实践与优化
如果无法正常显示,请先停止浏览器的去广告插件。
1. P R E S TO 在
FREEWHEEL广告平台
下的实践与优化
乔子健
FreeWheel
高级软件开发工程师
2. FreeWheel
FreeWheel, A Comcast Company (康卡斯特公司,美国最大的有线电视传输和宽带通信
公司) ,是专为视频媒体、广告主和媒体购买者提供高质量视频广告管理技术和服务
的提供商,借助优质的视频内容、强大的数据分析和领先的技术支持,助力广告行业
的蓬勃发展。目前,FreeWheel的广告平台正在美国被90%以上的主流电视媒体和运营
商使用。
3. 目录 CONTENT
01 Presto 基本概念 03 具体案例分享
02 在 FreeWheel 应用的现状 04 未来展望
4. 01
Presto 基本概念
5. Presto基本概念
“Presto is a distributed SQL query engine designed to
query large data sets distributed over one or more
heterogeneous data sources.”
Presto是一个分布式的SQL查询引擎,用来查询分布在
多种数据源上的大数据集。
6. Presto基本概念
Presto is a distributed SQL query engine designed to query large data
sets distributed over one or more heterogeneous data sources.
Stage 2
Task 2.0
Task 2.1 Task 2.2
Task 1.1 Task 1.2
SHUFFLE
Stage 1
Task 1.0
Drivers
7. Presto基本概念
Presto is a distributed SQL query engine designed to query large data
sets distributed over one or more heterogeneous data sources.
Presto Cluster
Coordinator
Worker Worker
Worker
Worker
Worker
8. Presto基本概念
Presto is a distributed SQL query engine designed to query large data
sets distributed over one or more heterogeneous data sources.
Presto Cluster
Coordinator
Worker Worker
Worker
Connectors (SPI)
Worker
Worker
9. Presto基本概念
Presto is a distributed SQL query engine designed to query large data
sets distributed over one or more heterogeneous data sources.
SQL on Anything
Connectors (SPI)
10. 02
Presto 在 FreeWheel
应用的现状
11. Presto在FreeWheel应用的现状
Presto版本: PrestoDB 0.236
集群部署: AWS
60K 1.1PB 15 &
100+ 280
QUERY数(SELECT
+ INSERT) 数据扫描量 集群数 节点数
12. Presto在FreeWheel应用的现状
使用到的Connector包括:
• FW connector (自研)
• Hive Connector
• Hive Connector For AWS Glue
• Hive Connector For Hudi
• Mysql Connector
• Postgresql Connector
• Druid Connector
• ClickHouse Connector (自研)
13. Presto在FreeWheel应用的现状
支持的业务包括:
• 离线/在线报表
• 在线查询分析
• 前端dashboard
• 前端API
• 基于SQL的ETL
• 等等
14. Presto在FreeWheel应用的现状
FW Connector
• Schema很复杂的Parquet文件
15. Presto在FreeWheel应用的现状
FW Connector
Coordinator
• Schema很复杂的Parquet文件
• 表结构在内存中构造: ~2000 flatten列
• Metadata Service: rowgroup level的索引
• Parquet Reader
plan & schedule
query filter
splits info
splits
Worker
Worker
Worker
MDS
16. Presto在FreeWheel应用的现状
Presto Service
Manager
17. Presto在FreeWheel应用的现状
SQLs
Presto Gateway
•
•
•
•
统一的SQL访问入口
基于规则的路由策略
常驻集群 & 按需启动
集群大小: mini, medium, large, xlarge ...
Gateway
Service
Manager
18. Presto在FreeWheel应用的现状
Arena
• 数据处理平台
• 当前: Presto SQL on Anything
• 未来: 引入更多数据处理能力
19. 03
具体案例分享
20. Presto在FreeWheel应用的具体案例分享
案例一 : FW Connector Parquet 纯列式读取
Blocks
Blocks
Presto
Presto FW Connector
unpack
assemble (parquet-mr)
column
reader
Parquet
Column chunks
Column chunks
21. Presto在FreeWheel应用的具体案例分享
案例二 : ClickHouse Connector with Push Aggregation Down
Sub Plan
Aggregate
sum(v) group by expr_1
Table Scan
Project
expr_1 :=
date_format(t, '%Y-%m-%d')
Table Scan & Filter
column: t, v
table: demo
filterPredicate: t >= yesterday
connector plan
optimizer
ClickHouse sql:
select
formatDateTime (t,
'%Y-%m-%d'), sum(v)
from demo
where t >= yesterday
Jdbc
Direct
columnar
22. Presto在FreeWheel应用的具体案例分享
案例二 : ClickHouse Connector with Push Aggregation Down
Aggregate
Aggregate
Join
Join
Aggregate
Left
Right
Left
Sub Query → Sub Plan
Right
23. Presto在FreeWheel应用的具体案例分享
案例二 : ClickHouse Connector with Push Aggregation Down
Aggregate(Partial)
Join
Join
Left
Aggregate(Partial)
Right
Left
Right
24. Presto在FreeWheel应用的具体案例分享
案例二 : ClickHouse Connector with Push Aggregation Down
Project
Aggregate(Partial)
Join
Project
Aggregate(Partial)
Join
Project
Left
Right
Left
Right
25. Presto在FreeWheel应用的具体案例分享
案例二 : ClickHouse Connector with Push Aggregation Down
Aggregate
Join
Join
Left
Aggregate
Right
Left
Right
26. Presto在FreeWheel应用的具体案例分享
案例三 : MySQL connector 并行读取
ETL job on MySQL full scan
partition info
unique key info
27. Presto在FreeWheel应用的具体案例分享
案例三 : MySQL connector 并行读取
ETL job on MySQL full scan
28. 04
未来展望
29. 未来展望
1. 持续的集群调优
• sql pattern 分析
• config 调优
• 升级Presto新版本,应用新功能
2. 统一query的访问入口
3. 跨区域的容灾
30. 非常感谢您的观看