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

109 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第10天

1. 概述

  1. 大数据与OLAP的演进
  • 大数据=\大规模的数据量
  • Hadoop:基于廉价机器的存算分离的大规模分布式处理系统

OLAP:OnLine Analytical Processing

  • OLAP核心概念:维度\度量
  • 常见引擎:预计算;批示处理;流式处理;交互式处理引擎
  1. Presto 设计思想
  • PB级交互式分析引擎

2. Presto基础原理和概念

  1. 数据源相关

Connector:一个Connector代表一个数据源

Catalog:管理元信息与实际数据的映射关系

  1. Query相关

Query:基于SQL parser 后获得的执行计划

Stage:Query->subplane->stage

Fragment:基本等价于Stage

Task:单个worker节点上的最小资源管理单位

Pipeline:LocalExchange->Operator->Pipeline

Driver:Pipeline的可执行实体

Split:输入数据描述

Operator:最小的物理算子

  1. 数据传输相关

Exchange & LocalExchange(默认值为16)

真实并行度:在不同Pipeline下的Split(Driver)的数目之和

  1. 核心组件架构

Discovery Service

通信机制:Presto Client/JDBC Client与server间通信;Coordinator与Worker;Worker与Worker

节点状态:ACTIVE; INACTIVE; SHUTDOWN

3. Presto重要机制

  1. 多租户资源管理

resource group:类似于Yarn 多级队列的资源管理方式

  • 优点:轻量的Query级别的多级队列资源管理模式

  • 缺点:存在一定滞后性

  1. 任务调度
  • Stage:AllAtOnceExecutionPolicy(同时调度;延迟低,会存在任务空跑)、PhasedExecutionPolicy(分阶段调度,不代表每个Stage都分开调度;有一定延迟,节省部分资源)

  • Task:数量如何确定(Source,Fixed,Sink,Scaled,Coordinator);选择什么样的节点(HARD-AFFINITY, SOFT-AFFINITY, NO-PREFERENCE)

  • Split: FIFO先进先出;优先级调度(快速响应);MultiplelevelSplitQueue

  1. 内存计算
  • Pipeline 化的数据处理

  • Back Pressure Mechainsm(反压机制):控制split生成流程;控制operator的执行

  1. 多数据源联邦查询

将各个数据源进行统一的抽象,最后由presto server 进行统一的物理执行

局限性:元数据管理与映射;谓词下推;数据源分片

4. 性能优化实战

  1. 常见性能分析工具:Grafana,Java相关指令,Arthas,Presto UI

  2. 具体案例分析