Presto架构原理与优化 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第7天
Presto架构原理与优化
概述
大数据与OLAP的演进
Hadoop:基于廉价机器的存算分离的大规模分布式处理系统 OLAP(Online Analytical Processing):对业务数据执行多维度分析,并提供复杂计算,趋势分析和复杂数据建模的能力,是许多商务只能(BI)应用程序背后的技术。 OLAP通常提供SQL的形式进行交互。
- 常见OLAP引擎;
- 预计算引擎:Kylin,Durid
- 批式处理引擎:Hive,Spark
- 流式处理引擎:Flink
- 交互式处理引擎:Presto,Clickhouse,Doris
presto基础原理和概念
服务相关
- Coordinator:
- 解析SQL语句
- 生成执行计划
- 分发执行任务给worker
- Worker:
- 执行Task任务
- 与其他Worker交互传输数据
数据源相关
- Connector:一个Connector代表一种数据源,可以认为Connector是由Presto提供的适配多数据源的统一接口。
- Catalog:管理元信息与实际数据的映射关系
Query相关
- Query:查询任务
- Stage:根据是否需要Shuffle将Query拆分成不同的Subplan,每个subplan是一个stage
- Fragment:等价于Stage
- Task:Worker节点上最小资源管理单位
- Pipline:Stage按照LocalExchange切分为若干Operator集合,每个Operator集合定义一个Pipline
- Driver:Pipline的可执行实体
- Split:输入数据描述,数量上和Driver一一对应,不仅代表实际数据源split,也代表不同stage之间传输数据。
- Operator:最小的物理执行算子
数据传输相关
Exchange&LocalExchange:
- Exchange:不同stage间的数据传输,大多数一一下等价于shuffle
- LocalExchange:stage内的rehash操作,常用于提高并行处理数据的能力
核心组件架构
服务发现
通信协议
Http、Thrift
Presto重要机制
多租户资源管理 Resource Group
多级队列资源管理方式,基于CPU、内存、SQL执行数进行资源使用量限制
任务调度
内存计算
- pipline化的数据处理
- Back Pressure Mechanism