PrestoSQL查询引擎
- 1、Presto概述
- 1.1、Presto背景
- 1.2、什么是Presto
- 1.3、Presto的特性
- 2、Presto架构
- 2.1、Presto的两类服务器
- 2.2、Presto基本概念
- 2.3、Presto数据模型
- 3、Presto查询过程
- 3.1、Presto执行原理
- 3.2、Presto与Hive
- 3.3、Presto与Impala
- 3.4、PrestoDB与PrestoSQL
- 4、Presto优化器
1、Presto概述
1.1、Presto背景
Facebook的数据仓库存储在少量大型Hadoop/HDFS集群。Hive是Facebook在十几年前专为Hadoop打造的一款数据仓库工具。在以前,Facebook的科学家和分析师一直依靠Hive来做数据分析。Hive使用MapReduce作底层计算框架,是专为批处理设计的
随着数据源的多样化、数据仓库的不断扩展以及数据湖的发展,使用Hive及时获得有用的见解可能变得困难。例如使用Hive进行一个简单的数据查询可能需要花费几分钟甚至几小时,这显然不能满足企业级交互式查询的需求
于是Facebook调研了其他比Hive更快的工具,但它们要么在功能有所限制,要么就太简单,以至于无法操作Facebook庞大的数据仓库
在Facebook试用了一些外部项目但都不合适后,2012年秋季,他们决定自己开发,Presto应运而生
2013年,Facebook正式宣布开源Presto。2015年,Netflix展示了Presto实际上比Hive快10倍,在某些情况下甚至更快
Hive的问题主要在于它将MapReduce查询的中间结果存储在磁盘上,这会导致在磁盘间产生大量的I/O开销。Presto凭借其新的架构和内存引擎,将显着降低其延迟和查询速度,从而允许更多的交互式查询
Presto的用例范围从交互式即席查询到长时间运行的批量ETL管道,使其能够灵活地适应各种数据驱动的用例和应用程序
1.2、什么是Presto
Presto是由FaceBook开源的一个MPP SQL引擎,主要用来解决Facebook海量Hadoop数据仓库的高延迟交互分析问题
Facebook版本的Presto更多的是以解决企业内部需求功能为主,也叫PrestoDB,版本号以0.xxx
来划分,例如目前的最新版本0.284
版本
后来,Presto其中的几个人出来创建了更通用的Presto分支,取名PrestoSQL,版本号以xxx
来划分,例如315
版本,这个开源版本也是更为被大家通用的版本
为了更好的与Facebook的Presto进行区分,PrestoSQL于2020年12月27日改名为Trino,除了名字改变了其他都没变。不管是PrestoDB还是PrestoSQL,它们“本是同根生”,因此它们的大部分的机制原理是一样的
PrestoDB官网:https://prestosql.io/ 或 https://prestodb.io/
PrestoDB官方文档1:https://prestodb.io/docs/0.284/overview.html
PrestoDB官方文档2:https