这是我参与「第四届青训营 」笔记创作活动的第8天。
Presto 架构原理与优化介绍
大数据的概念: 在信息化时代背景下,由于信息交互,信息存储,信息处理能力大幅增加而产生的数据
OLAP是什么? OLAP是对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。是许多商务智能(BI)应用程序背后的技术。现如今OLAP已经发展为基于数据库通过SQL对外提供分析能力
Presto的设计理念: Presto最初是由facebook研发的构建于Hadoop/HDFS系统之上的PB级交互式分析引擎,其具有如下的特点: 多租户任务的管理与调度 多数据源联邦查询 支持内存化计算 pipeline式数据处理
Presto基础概念有服务相关概念、数据源相关概念、Query相关概念和数据传输相关概念。
Presto的架构: 他是一套分布式的SQL执行架构,它最大的特点就是天然就是存储计算分离,Presto只负责计算,存储的部分由数据源自身提供。这种存储与计算分离的架构好处是存储资源不够时可以独立扩容存储,计算资源不够时可以独立扩容计算,而且计算和存储能够分别使用适合自己的机型。分布式的存储系统的实现一般都比较复杂,涉及到数据的分区、副本、容灾、文件格式、IO优化等,是一项非常大的工程。Presto直接放弃了存储,只做计算,但是这种方式也有不好的地方,比如不支持单个Query内部的执行容错,如果Query中的某个Task失败了,会导致整个Query失败。这样实现起来更简单,代价是需要用户侧来重试。
Presto是从哪几个方面实现了多租户的任务调度: Stage调度策略,Task的节点选择策略和Split调度策略
Presto多数据源支持的优点与缺点
优点:支持多数据源的联邦查询 缺点:针对不同数据源,还存在许多问题需要解决 谓词下推 每个数据源都需要单独的一套catalog管理 如何针对数据源进行分片操作
常用的性能分析工具:Grafana、Arthas、火焰图和java指令。