分布式查询引擎Presto
Posted cdai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式查询引擎Presto相关的知识,希望对你有一定的参考价值。
分布式查询引擎Presto
本文内容主要来自《Presto: The Definitive Guide - SQL at Any Scale, on Any Storage, in Any Environment》一书。
1.Presto的历史
2008年,Facebook开源了Hive,之后成了Apache的顶级项目。Hive在Facebook被广泛使用来分析它巨大Hadoop集群中HDFS里的数据。然而,Hive的性能不足以支撑交互式数据分析的场景。2012年,Facebook的Hive数据仓库已经达到250PB的规模,每天都有数以百计的用户执行上千的分析查询。Hive达到了性能上限,同时它也无法满足查询更多其他数据源的需求。
2012年,Facebook的四名工程师着手开发Presto,用来解决Facebook内部大数据分析的性能、伸缩性和扩展性等问题。尽管在Facebook内部孵化,一开始Presto就作为开源软件来打造。2013年初,Presto的初始版本发布到Facebook的生产环境。2013年秋天,Presto正式开源了。在此之后,许多公司立刻跟进,Teradata成立了20名工程师的小组,专门向Presto贡献代码。Amazon也将Presto加入到EMR服务(Elastic MapReduce),而后发布的Athena服务更是以Presto作为基础框架。2018年末,Presto的创始人们离开了Facebook,成立了自己的公司,Presto继续加速发展。
2.Presto要解决的问题
通过前面对Presto历史的介绍,可以看出Presto最想解决的有两个问题:
- Hive查询处理的性能限制了交互式数据分析
- Hive无法查询HDFS(和Amazon S3)以外的其他数据源
3.Presto不是什么
在介绍Presto的主要功能特性之前,我们要先明确Presto是什么。从另一角度来看,就是明确Presto不是什么,这样才能避免错误的预期:
- Presto不是通用的数据库:它并不是用来取代任何关系型,如SQL Server、Oracle、mysql,也不是用来取代任何非关系型数据库
- Presto不是用来处理OLTP请求:也就是说Presto是用来处理OLAP分析型请求的。OLTP和OLAP的具体区别在《Design Data-Intensive Application》的第三章里有讲解,也可以自行搜索资料了解。
4.Presto主要特性
- 存储和计算分离:Presto本身不负责存储,它只负责计算方面的高性能和伸缩性。
- 数据本地性:Presto不要求数据迁移到指定位置,传统数据仓库和ETL的方式不是必需的。
- SQL-on-anything:Presto只需做好SQL查询处理,SQL生态圈有大量支持SQL的管理工具、分析报表、可视化、机器学习。
- 支持各种数据源:Presto支持Federated查询,即一条SQL查询中引用来自不同数据源的数据。
5.改名Trino
Presto改名Trino,这篇文章介绍了事情的缘由和始末。不管怎样,Presto/Trino的社区都还很活跃,内部的架构设计更值得学习。之后有机会会深入学习和介绍一下它们的架构。如果现在想快速试用一下Presto的话,可以参考这里直接使用它的Docker镜像,里面自动附带了Presto CLI、集群和TPC测试数据。
以上是关于分布式查询引擎Presto的主要内容,如果未能解决你的问题,请参考以下文章