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

97 阅读3分钟

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

本节课学习内容如下:
1、概述
2、Presto基础原理与概念
3、Presto重要机制
4、性能优化实战

概述

  1. 什么是大数据?
    在信息化时代背景下,由于信息交互,信息存储,信息处理能力大幅增加而产生的数据
  1. 什么是OLAP?
    OLAP(OnLine Analytical Processing)对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。是许多商务智能(BI)应用程序背后的技术。现如今OLAP已经发展为基于数据库通过SQL对外提供分析能力

Presto设计理念

image.png

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

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

基础概念

image.png

  1. Presto基础概念主要可以分为哪几类?
  • 服务相关概念
  • 数据源相关概念
  • Query相关概念
  • 数据传输相关概念
  1. Presto的通信方式有哪些,Thrift通信的优势
    Http 1.1 vs Thrift
    Thrift具有更好的数据编码能力,Http 1.1还不支持头部信息的压缩,Thrift具有更好的数据压缩率
  1. Presto Worker的不同状态
  • Active
  • InActive
  • Shutdown

image.png

重要机制

  1. Presto用户多租户隔离的手段是什么?
    Presto 通过Resource Group对不同的用户创建不同Group从而实现不同租户,不同场景的资源管理
  1. Presto Resource Group的优缺点
    优点:支持通配符的形式,对不同租户,不同提交场景下的用户进行限制
    缺点:资源的管理和判断是以当前用户正在运行的SQL资源使用量为基准,对于低频大SQL场景不太适用
  1. Presto是从哪几个方面实现了多租户的任务调度
    Stage调度策略
    Task的节点选择策略
    Split调度策略
  1. Presto Stage调度的方式:AllAtOnceExecutionPolicy 、 PhasedExecutionPolicy
  1. Presto 进行 Task 调度时,有哪些调度方式?
  • HARD_AFFINITY: 计算、存储 Local 模式,保障计算与存储在同一个节点,减少数据传输
  • SOFT_AFFINITY: 基于某些特定算法,如一致性HASH函数,常用于缓存场景,保证相似的 Task 调度到同一个 Worker
  • NO_PREFERENCE: 随机选取,常用于普通的纯计算 Task
  1. Presto是如何实现Back pressure mechanism的
  • 控制split生成流程 -  针对每个Task定时检查, 如果 OutputBuffers 使用率低于 0.5 (下游消费较快, 需要提高生产速度), Split 并发度+1
  • 控制Operator执行速度
  • "sink.max-buffer-size" 写入buffer的大小控制
  • "exchange.max-buffer-size" 读取buffer的大小控制
  • Buffer 达到最大值时Operator会进入阻塞状态
  1. Presto多数据源支持的优点与缺点
    优点:支持多数据源的联邦查询
    缺点:针对不同数据源,还存在许多问题需要解决
  • 谓词下推
  • 每个数据源都需要单独的一套catalog管理
  • 如何针对数据源进行分片操作

性能优化实战

  1. 常用的性能分析工具

    1. Grafana
    2. Arthas
    3. Flame Figure(火焰图)
    4. java指令:jstack等指令

Arthas在presto常用哪些命令

  1. watch:监控每个函数入参、返回参数、异常等信息

image.png

2.trace:统计函数内每一步的执行时间

image.png

  1. 通过火焰图如何分析性能瓶颈

image.png 火焰图用于分析热点代码占用大量cpu,从而导致服务性能下降的情况。如下图,自底向上为调用关系。上层宽度越宽表示当前函数cpu耗时越久,我们关注最宽的函数调用。

个人总结:

通过本次课程的学习,了解到了Presto的基本原理及概念,并且知道了Presto内部的一直重要机构,以及了解了几个常用的性能分析工具。