Presto 基础原理和概念 | 青训营笔记

143 阅读4分钟

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

第七节课「Presto 架构原理与优化介绍」的内容主要包含 4 个方面:概述、Presto 基础原理和概念、Presto 基础原理和概念、性能优化实战。这篇文章包括概述、Presto 基础原理和概念。

概述

  • 大数据:在信息化时代背景下,由于信息交互、信息存储、信息处理能力大幅增加而产生的数据

  • OLAP (OnLine Analytical Processing):对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力,是许多商务智能(BI)应用程序背后的技术。现如今 OLAP 已经发展为基于数据库通过 SQL 对外提供分析能力。

Presto 基础原理和概念

Presto 最初是由 Facebook 研发的构建于 Hadoop/HDFS 系统之上的 PB 级交互式分析引擎,其具有如下的特点:

  • 多租户任务的管理与调度
  • 多数据源联邦查询
  • 支持内存化计算
  • pipeline式数据处理

Presto 基础概念主要可以分为以下几类:

  • 服务相关概念
  • 数据源相关概念
  • Query相关概念
  • 数据传输相关概念

Presto 基础概念-服务

  • Coordinator(负责调度)

    • 解析SQL语句
    • ⽣成执⾏计划
    • 分发执⾏任务给Worker节点执⾏
  • Worker

    在一个 Presto 集群中,存在一个 coordinato r节点和多个 worker 节点,coordinator 节点是管理节点,而 worker 节点就是工作节点,在每个 worker 节点上都会存在一个 worker 服务进程,该服务进程主要进行数据的处理以及 task 的执行,worker 服务进程每隔一定的时间都会向coordinator 上的服务发送心跳,接受调度。当客户端提交一个查询的时候,coordinator 则会从当前存活的 worker 列表中选择出适合的 worker 节点去运行 task,而 worker 在执行每个 task 的时候又会进一步对当前 task 读入的每个 split 进行一系列的操作和处理

  • Discovery Service(将 coordinator 和 worker 结合到一起的服务):

    • Worker 节点启动后向 Discovery Server 服务注册
    • Coordinator 从 Discovery Server 获得 Worker 节点

    所有的 worker 都把自己注册到 Discovery Server 上,Discovery Server 是一个发现服务的 service,Discovery Server 发现服务之后,coordinator 便知道在集群中有多少个 worker 能够工作,分配工作到 worker 时便有了根据。

Presto 基础概念-数据源

  • Connector

    Presto 通过 Connector 来支持多数据源,一个 Connector 代表一种数据源,如 Hive Connector 代表了对 Hive 数据源的支持。可以认为 Connector 是由 Presto 提供的适配多数据源的统一接口。

  • Catalog 针对不同的数据源,Connector 和 Catalog 是一一对应的关系,Catalog 包含了 schema 和 data source 的映射关系。

Presto 基础概念-Query 部分

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

Presto 基础概念-数据传输部分

  • Exchange:表示不同 Stage 间的数据传输,大多数意义下等价于 Shuffle
  • LocalExchange:Stage 内的 rehash 操作,常用于提高并行处理数据的能力(Task 在 presto 中只是最小的容器,而不是最小的执行单元)

个人总结

了解了 Presto 的基础原理和概念。

参考