这是我参与「第四届青训营 」笔记创作活动的的第10天
1. 概述
- 大数据与OLAP的演进
- 大数据=\大规模的数据量
- Hadoop:基于廉价机器的存算分离的大规模分布式处理系统
OLAP:OnLine Analytical Processing
- OLAP核心概念:维度\度量
- 常见引擎:预计算;批示处理;流式处理;交互式处理引擎
- Presto 设计思想
- PB级交互式分析引擎
2. Presto基础原理和概念
- 数据源相关
Connector:一个Connector代表一个数据源
Catalog:管理元信息与实际数据的映射关系
- Query相关
Query:基于SQL parser 后获得的执行计划
Stage:Query->subplane->stage
Fragment:基本等价于Stage
Task:单个worker节点上的最小资源管理单位
Pipeline:LocalExchange->Operator->Pipeline
Driver:Pipeline的可执行实体
Split:输入数据描述
Operator:最小的物理算子
- 数据传输相关
Exchange & LocalExchange(默认值为16)
真实并行度:在不同Pipeline下的Split(Driver)的数目之和
- 核心组件架构
Discovery Service
通信机制:Presto Client/JDBC Client与server间通信;Coordinator与Worker;Worker与Worker
节点状态:ACTIVE; INACTIVE; SHUTDOWN
3. Presto重要机制
- 多租户资源管理
resource group:类似于Yarn 多级队列的资源管理方式
-
优点:轻量的Query级别的多级队列资源管理模式
-
缺点:存在一定滞后性
- 任务调度
-
Stage:AllAtOnceExecutionPolicy(同时调度;延迟低,会存在任务空跑)、PhasedExecutionPolicy(分阶段调度,不代表每个Stage都分开调度;有一定延迟,节省部分资源)
-
Task:数量如何确定(Source,Fixed,Sink,Scaled,Coordinator);选择什么样的节点(HARD-AFFINITY, SOFT-AFFINITY, NO-PREFERENCE)
-
Split: FIFO先进先出;优先级调度(快速响应);MultiplelevelSplitQueue
- 内存计算
-
Pipeline 化的数据处理
-
Back Pressure Mechainsm(反压机制):控制split生成流程;控制operator的执行
- 多数据源联邦查询
将各个数据源进行统一的抽象,最后由presto server 进行统一的物理执行
局限性:元数据管理与映射;谓词下推;数据源分片
4. 性能优化实战
-
常见性能分析工具:Grafana,Java相关指令,Arthas,Presto UI
-
具体案例分析