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

99 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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)的数目和

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的多级缓存