Presto 架构原理|青训营笔记

117 阅读3分钟

这是我参与【第四届青训营-大数据场】笔记创作活动的第8天

什么是大数据?

  • 大数据=大规模的数据量?

  • 关于大数据这里我们参考马丁·希尔伯特的总结:大数据其实是在2000年后,因为信息化的快速发展。信息交换、信息存储、信息处理三个方面能力的大幅增长而产生的数据。

  • OLAP(OnLine Analytical Processing)对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。是许多商务智能(Bl)应用程序背后的技术。

- OLAP VS MapReduce

1.MapReduce 代表了抽象的物理执行模型,使用门槛较高 2.与 Mapreduce Job 相比,OLAP 引擎常通过 SQL 的形式,为数据分析、数据开发人员提供统一的逻辑描述语言,实际的物理执行由具体的引擎进行转换和优化。

基础概念介绍-数据源相关

Connector: 一个 Connector 代表一种数据源。可以认为 Connector 是由 Presto 提供的适配多数据源的统一接口。

Catalog: 管理元信息与实际数据的映射关系。 基础概念介绍-Query 相关
Query 基于 SQL parser 后获得的执行计划

Stage

根据是否需要 shuffle 将 Query 拆分成不同的 subplan,每一个 subplan 便是一个 stage Fragment

基本等价于 Stage,属于在不同阶段的称呼,在本门课程可以认为两者等价

Task

单个 Worker 节点上的最小资源管理单元: 在一个节点上,一个 Stage 只有一个 Task, 一个 Query 可能有多个Task基础概念介绍-Query相关

Pipeline

Stage 按照 LocalExchange 切分为若干 Operator 集合, 每个 Operator 集合定义一个 Pipeline.

Driver

Pipeline 的可执行实体,Pipeline 和 Driver 的关系可类比 程序和进程,是最小的执行单元,通过 火山迭代模型执行每一个Operator.

Spli

输入数据描述(数据实体是 Page), 数量上和 Driver --对应,不仅代表实际数据源split,也代表了不同stage间传输的数据。

52a2d07035f999dbcf90a47749e322e.png Operator

最小的物理算子。 基础概念介绍-数据传输相关

Exchange & LocalExchange:

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

1.Worker 配置文件配置 Discovery Service地址

  1. Worker 节点启动后会向 Discovery Service 注册

  2. Coordiantor 从Discovery Service 获取 Worker 的地址

- 核心组件架构介绍-通信机制

通信机制

  1. Presto Client/ JDBC Client与Server 间通信.Http
  2. Coordinator 与 Worker 间的通信 Thrift /Http
  3. Worker 与 Worker 间的通信 Thrift/Http

a1f480d01394562fe10bbc6c1a0fd24.png Http 1.1 VS Thrift

  • Thrift 具有更好的数据编码能力,Http 1.1 还不支持头部信息的压缩,Thrift 具有更好的数据压缩率

  • 多租户下的任务调度- Stage 调度

  • PhasedExecutionPolicy:

  • 不代表每个 stage 都分开调度

- 典型的应用场景(join查询)

  • Build 端:右表构建用户join的hashtable
  • Probe 端:对用户左表数据进行探查,需要等待build端完成
  • Build 端构建hashtable端时,probe 端是一直在空跑的

多租户下的任务调度 - Task 调度

  • Task 的数量如何确定:
  • Source:根据数据meta决定分配多少个节点
  • Fixed: hash partition count 确定,如集群节点数量
  • Sink: 汇聚结果,一台机器
  • / Scaled:无分区限制,可拓展,如write数据
  • V Coordinator Only: 只需要coordinator参与