PrestoSQL查询引擎
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://dzone.com/refcardz/getting-started-with-prestodb
PrestoSQL官网:https://trino.io
PrestoSQL官方文档:https://trino.io/docs/current/overview.html
Presto是一款灵活、可扩展的分布式SQL查询引擎,旨在填补Hive在速度和灵活性(对接多种数据源)上的不足。相似的SQL On Hadoop产品还有Impala和Spark SQL等
Presto本身并不存储数据,但是可以接入多个异构数据源上的大型数据集,并且支持跨数据源的级联查询。Presto基于内存运算,速度快,实时性高
Presto是一个OLAP工具,擅长对海量数据进行复杂的分析。Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、Oracle的替代品,也不能用来处理在线事务(OLTP)
和MySQL相比,MySQL是一个数据库,具有存储和计算分析能力;而Presto和Hive、Impala、Spark一样只有计算分析能力
和Hive相比,Hive只能从HDFS中读取数据,而Presto⽀持跨数据源进行数据查询和分析
Presto支持跨源查询,包括HDFS、Hive、关系数据库(MySQL、Oracle等)、NoSQL(MongoDB、Redis等)、Kafka以及一些专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析
1.3、Presto的特性
Presto使用Java语言进行开发,具备易用、高性能和强扩展能力等特点,具体如下:
- 完全支持ANSI SQL <