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

22 阅读2分钟

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

Presto架构原理与优化

概述

基于廉价机器的存算分离分布式处理系统:Hadoop

Map数据转换,Reduce数据聚合、清洗

OLAP(Online Analytical Processing):对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模

核心概念:维度、度量

Presto:构建于HDFS系统的交互式分析引擎

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

Presto基础原理和概念

  • 黄色:数据源;绿色:Presto服务(进程或线程);蓝色:用户端,提交sql query

  • Coordinator

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

    • 执行Task处理数据
    • 与其他Worker交互传输数据
  • Connector

    • 一个Connector代表一种数据源。适配多数据源的接口
  • Catalog

    • 管理元信息与实际数据的映射关系。哪一个topic对应哪一个表的哪个分区

Stage:节点间数据传输(Shuffle),每一个计算可以称为一个stage。将query拆分成不同的subplan,每一个subplan就是一个stage

Task:单个Worker节点上的最小资源管理单元

  • Pipeline

    • Stage按照LocalExchange(单节点内的shuffle操作),切分为若个Operator集合,每个Operator集合定义一个Pipeline
  • Driver

    • Pipeline的可执行实体,最小的执行单元
  • Split

    • 输入数据描述。与Driver一一对应
  • Operator

    • 最小的物理算子
  • Exchange & LocalExchange

    • Exchange:表示不同Stage间的数据传输,等价于shuffle
    • Stage内的rehash操作,提高并行处理数据的能力
  • Discovery service

    • Worker注册,Coordinator获取Worker信息
  • 通信机制

    • Http1.1 VS Thrift:Thrift具有更好的数据编码能力,Http1.1不支持头部信息的压缩

Presto重要机制

多租户任务调度

物理计划生成

  1. 解析生成AST
  2. 转换成Logical Plan
  3. 按照是否存在Shuffle(Exchange),切分成不同的Stage(Fragment)

部分聚合 -> 整体聚合,部分->整体需要shuffle