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

115 阅读2分钟

Presto 架构原理与优化介绍

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

概述

大数据:在信息化时代背景下,由于信息交互,信息存储,信息处理能力大幅增加而产生的数据

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

是许多商务智能(BI)应用程序背后的技术。现如今OLAP已经发展为基于数据库通过SQL对外提供分析能力

存算分离:存储与计算不在同一台设备上 —— 性能较好的设备用于计算,存储量大的设备用于存储

OLAP vs. MapReduce

image.png

OLAP

image.png

从纬度和度量连个角度分析数据

OLAP引擎

image.png

Presto

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

其具有如下的特点:

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

image.png

Presto 基础原理与概念

基础架构

image.png

image.png

Query 相关

image.png image.png

image.png

Exchange:stage间
LocalExchange:stage内

核心组件架构

image.png

image.png

通信机制

image.png

节点状态

  • Active
  • Inactive
  • Shutdown(状态):发出结束任务的信号,设定限制时间,在限制时间内仍能处理剩余数据

Presto 重要机制

多租户资源管理

image.png

多租户下的任务调度

image.png

1. Stage调度策略

image.png

2. Task的节点选择策略

image.png

调度方式:

  • HARD_AFFINITY: 计算、存储 Local 模式,保障计算与存储在同一个节点,减少数据传输

  • SOFT_AFFINITY: 基于某些特定算法,如一致性HASH函数,常用于缓存场景,保证相似的 Task 调度到同一个 Worker

  • NO_PREFERENCE: 随机选取,常用于普通的纯计算 Task

3. Split调度策略

image.png

内存计算

image.png

多数据源的联邦查询

image.png

优点:支持多数据源的联邦查询

  • 缺点:针对不同数据源,还存在许多问题需要解决
    • 谓词下推
    • 每个数据源都需要单独的一套catalog管理
    • 如何针对数据源进行分片操作

性能优化实战

性能分析工具

1. Grafana image.png

2. Jstack image.png

3. JMX image.png

4. Presto UI image.png

5. Flame Figure

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

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