Presto架构原理 | 青训营笔记

77 阅读3分钟

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

概述


  • Presto 设计思想: image.png
    • Presto 最初是由 Facebook 研发的构建于 Hadoop/HDFS 系统之上的 PB 级交互式分析引擎,具有以下特点:
      • 多租户任务的管理和调度
      • 多数据源联邦调查
      • 支持内存化计算
      • Pipeline 式数据处理

Presto 基础原理


基础概念

服务相关

image.png

  • Coordinator
    • 解析 SQL 语句
    • 生成执行计划
    • 分发执行任务给 Worker 节点
  • Worker
    • 执行 Task 处理数据
    • 与其他 Worker 交互传输数据

数据源相关

image.png

  • Connector
    • 一个 Connector 代表一种数据源。可以认为 Connector 是由 Presto 提供的适配多数据源的统一接口。
  • Catalog
    • 管理元信息与实际数据的映射关系

Query 相关

image.png

  • Query
    • 基于 Query parser 后获得的执行计划
  • Stage
    • 根据是否需要 Shuffle 将 Query 拆分成不同的 subplan,每一个 subplan 便是一个 stage
  • Fragment
    • 基本等价于 Stage,属于在不同阶段的称呼,在此认为两者等价
  • Task
    • 单个 Worker 节点上的最小资源管理单元:在一个节点上,一个 Satge 只有一个 Task,一个 Query 可能有多个 Task
  • Pipeline
    • Stage 按照 localExchange 切分为若干 Operator 集合,每个 Operator 集合定义一个 Pipeline
  • Driver
    • Pipeline 的可执行实体,Pipeline 和 Driver 的关系可类比程序和进程,是最小的执行单元,通过火山迭代模型执行每一个 Operator
  • Split
    • 输入数据描述(数据实体是 Page),数量上和 Driver 一一对实际数据源 应,不仅代表数据源 split,也代表了不同 Stage 间传输的数据
  • Operator
    • 最小的物理算子

数据传输相关

image.png

  • Exchange:
    • 表示不同 Stage 间的数据传输,大多数意义下等价于 Shuffle
  • LocalExchange:(默认数值是 16)
    • Stage 内的 rehash 操作,常用于i提高并行处理数据的能力(Task 在 Presto 中只是最小的容器,而不是最小的执行单元)
  • 多租户下的任务调度 image.png image.png
    • 衡量某个任务某个 Stage 的真实并行度
      • 在不同的 Pipeline 下 Split(Driver)的数目之和

核心组件架构介绍

  • Presto 架构图 image.png

服务发现

image.png

  • Discovery Service
    • Worker 配置文件配置 Discovery Service 地址
    • Worker 节点启动后会向 Discovery Service 注册
    • Coordinator 从 Discovery 获取 Worker 的地址

通信机制

  • Presto Client / JDBC Client 与 Server 间通信
    • Http
  • Coordinator 与 Worker 间的通信
    • Thrift / Http
  • Worker 与 Worker 间的通信
    • Thrift / Http
  • Http 1.1 VS Thrift
    • 前者不支持头部信息的压缩
    • 后者具有更好的数据编码能力和数据压缩率
  • 节点状态
    • ACTIVE
    • INATIVE
    • SHUTDOWN

Shutdown 状态的作用

  • Graceful Shutdown(优雅的扩缩容): image.png

总结


1.从服务、数据源、Query、数据传输四个角度,介绍了 Presto 相关的基础概念

  • 服务、数据源、Query、数据传输包含哪些基本概念
  • 如何衡量一个任务的并行度(Task 并不是最小的执行单元) 2。通过服务发现、通信机制、节点状态三方面介绍了 Coordinator 与 Worker 是如何协调和工作的