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

194 阅读2分钟

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

哈喽大家好,今天的学习内容是Presto 架构原理与优化介绍

01.概述

大数据与OALP系统的演进

什么是大数据

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

  • 信息交换
    通信和网络带宽的大幅增长
  • 信息存储
    计算机存储量的大幅增长
  • 信息处理
    整理、转换、分析数据的能力大幅增长

Hadoop:基于廉价机器存算分离的大规模分布式处理系统(cpu性能好的进行计算,差的进行存储)

1.谷歌在2003、2004年发布Google File System论文,Mapreduce论文

2.2008年,Hadoop成为apache顶级项目

OLAP对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。

常见的OLAP引擎:

  • 预计算引擎: Kylin,Druid
  • 批式处理引擎: Hive,Spark
  • 流式处理引擎: Flink
  • 交互式处理引擎: Presto,Clickhouse,Doris

Presto 设计思想

Presto 最初是由Facebook研发的构建于Hadoop/HDFS系统上的PB级交互式分析引擎。

特点:

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

02.Presto 基础原理与概念

此处可以查阅上篇文章
Presto 架构原理与优化介绍课前学习|青训营笔记 - 掘金 (juejin.cn)

03.Presto 重要机制

多租户资源管理

Resource Group

· 类似于Yarn多级队列的资源管理方式

· 基于CPU、MEMORY、SQL执行数进行资源使用量限制

优点: 轻量的Query级别的多级队列资源管理模式

缺点: 存在一定的滞后性,只会对Group中正在运行的SQL进行判断

多租户下的任务调度

物理计划生成

1.Antlr4解析生成AST

2.转换成Logical Plan

3.按照是否存在Shuffle,切分成不同的Stage

image.png

任务调度

  • Stage调度
    调度策略和分阶段调度
  • Task调度
    Task的数量与节点的确定
  • Split调度
    FIFO
    优先级调度:快速响应

内存计算

· Pipeline化的数据处理:更好的实现算子间的并行,保证了每个Task内的数据流式处理 · Back pressure Mechanism:控制split生成流程与operator的执行

多数据源联邦查询

将各个数据源进行统一的抽象,最后由presto server进行统一的物理执行。

局限性:

  • 元数据管理与映射
  • 调词下推
  • 数据源分片

具体案例分析由于篇幅原因在此就不展开分析,好了,今天的学习到这里就结束了,感谢阅读。