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

98 阅读2分钟

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

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

Presto架构原理与优化

概述

大数据与OLAP的演进

Hadoop:基于廉价机器的存算分离的大规模分布式处理系统 OLAP(Online Analytical Processing):对业务数据执行多维度分析,并提供复杂计算,趋势分析和复杂数据建模的能力,是许多商务只能(BI)应用程序背后的技术。 OLAP通常提供SQL的形式进行交互。

  • 常见OLAP引擎;
    • 预计算引擎:Kylin,Durid
    • 批式处理引擎:Hive,Spark
    • 流式处理引擎:Flink
    • 交互式处理引擎:Presto,Clickhouse,Doris

presto基础原理和概念

服务相关

capture_20220802203743521.bmp

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

数据源相关

capture_20220802204327864.bmp

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

Query相关

  • Query:查询任务
  • Stage:根据是否需要Shuffle将Query拆分成不同的Subplan,每个subplan是一个stage
  • Fragment:等价于Stage
  • Task:Worker节点上最小资源管理单位
  • Pipline:Stage按照LocalExchange切分为若干Operator集合,每个Operator集合定义一个Pipline
  • Driver:Pipline的可执行实体
  • Split:输入数据描述,数量上和Driver一一对应,不仅代表实际数据源split,也代表不同stage之间传输数据。
  • Operator:最小的物理执行算子

数据传输相关

Exchange&LocalExchange:

  • Exchange:不同stage间的数据传输,大多数一一下等价于shuffle
  • LocalExchange:stage内的rehash操作,常用于提高并行处理数据的能力

核心组件架构

capture_20220802205737443.bmp

服务发现

通信协议

Http、Thrift

Presto重要机制

多租户资源管理 Resource Group

多级队列资源管理方式,基于CPU、内存、SQL执行数进行资源使用量限制

任务调度

内存计算

  • pipline化的数据处理
  • Back Pressure Mechanism

多数据源联邦查询

性能优化实践