这是我参与「第四届青训营 」笔记创作活动的的第5天。
一、概述
1. 大数据与OLAP的系统演进
OLAP v.s. MapReduce
- MapReduce是抽象的物理执行模型
- OLAP通常是基于SQL的统一逻辑描述语言,实际的物理执行由具体的引擎进行转换和优化
OLAP核心概念
- 维度
- 度量 操作包括:
- 钻取
- 上卷
- 切片
- 切块
- 旋转
常见的OLAP引擎
- 预计算
- Kylin, Druid
- 批处理
- Hive, Spark
- 流式处理
- Flink
- 交互式处理引擎
- Presto, Clickhouse, Doris
2. Presto设计思想
特点
- 多租户任务的管理调度
- 多数据源联邦查询
- 内存化计算
- Pipeline式数据处理
二、Presto基础原理和概念
1. 基础概念
服务相关
- Coordinator
- 解析SQL语句
- 生成执行计划
- 分发执行任务给worker节点
- Worker
- 执行task处理数据
- 与其他worker交互传输数据
数据源相关
- Connector
- 一个connector数据源
- 适配多数据源的统一接口
- Catalog
- 管理辕信息与实际数据的映射关系
Query相关
- Query
- SQL Parser后获得执行计划
- Stage
- 是否需要shuffle把query拆分
- Fragment
- 等价于stage
- Task
- 单个worker节点上的最小资源管理单元,在一个节点上,一个stage只有一个task,一个query有多个task
- Pipeline
- LocalExchange划分若干Operator
- Driver
- Pipeline可执行实体,和Driver的关系可类比,火山迭代模型执行每个Operator
- Split
- 输入数据描述,数量和Driver一一对应
- Operator
- 最小的物理算子
数据传输相关
- Exchange & LocalExchange
- 衡量某个任务Stage的真实并行度
- 不同Pipeline下Split(Driver)的数目和
- 衡量某个任务Stage的真实并行度
2. 核心组件架构
Presto架构
- 服务发现 Discovery Service
- 通信机制
- 节点状态
- ACTIVE
- INACTIVE
- SHUTDOWN
- Shutdown状态的作用
- Graceful Shutdown
三、Presto重要机制
1. 多租户资源管理
Resource Group
2. 多租户下的任务调度
物理计划生成
- Stage调度
- Task调度
- Split调度
3. 内存计算
4. 多数据源联邦查询
四、性能优化实战
1. 常用性能分析工具
- Arthas
- Flame Figure
- Presto UI
2. 具体案例分析
3. 字节内部实战
- Multi Coordinator
- History Server
- Support Remote UDF
- RaptorX的多级缓存