Presto 架构原理与优化介绍|青训营笔记

130 阅读2分钟

Presto 架构原理与优化介绍|青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第3天 今天我学习了关于Presto的相关知识。

1.1 大数据与OLAP的演进

常见的OLAP引擎: 1.预计算引擎:Kylin,Druid 2.批式处理引擎:Hive,Spark 3.流式处理引擎:Flink 4.交互式处理引擎:Presto,Clickhouse,Doris

2.1基础概念介绍Query相关

➢Query
基于SQL parser后获得的执行计划
➢Stage
根据是否需要shuffle将Query拆分成不同的subplan,每一个subplan便是一个stage
➢Fragment
基本等价于Stage,属于在不同阶段的称呼,在本门课程可以认为两者等价
➢Task
单个Worker节点上的最小资源管理单元:在一个节点 上,一个Stage只有一个Task,一个Query可能有多个Task
➢Pipeline
Stage按照LocalExchange切分为若干Operator集合,每个Operator集合定义一个Pipeline.
➢Driver
Pipeline的可执行实体,Pipeline 和Driver的关系可类比程序和进程, 是最小的执行单元,通过火山迭代模型执行每-个Operator.
➢Split
输入数据描述(数据实体是Page),数量上和Driver -对应 ,不仅代表实际数据源split ,也代表了不同stage间传输的数据。
➢Operator
最小的物理算子。

3.1多租户下的任务调度- Task调度

Task的数量如何确定:
Source :根据数据meta决定分配多少个节点
Fixed: hash partition count确定,如集群节点数量V Sink:汇 聚结果,一台机器 Scaled :无分区限制,可拓展,如write数据V Coordinator _Only: 只需要coordinator参与

3.2 Split调度

FIFO:顺序执行,绝对公平
优先级调度:快速响应

3.3内存计算

1.Pipeline化的数据处理
2.Back Pressure Mechanism

3.4多数据源联邦查询

将各个数据源进行统一的抽象,最后由presto server进行统一的物理执行
局限性:
1.元数据管理与映射
2.谓词下推
3.数据源分片