Presto (PrestoDB) 简介

针对任何规模的数据执行快速分析查询

什么是 Presto 或 PrestoDB?

Presto(或 PrestoDB)是一种开源的分布式 SQL 查询引擎,从头开始设计用于针对任何规模的数据进行快速分析查询。它既可支持非关系数据源,例如 Hadoop 分布式文件系统 (HDFS)、Amazon S3、Cassandra、MongoDB 和 HBase,又可支持关系数据源,例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。

Presto 可在数据的存储位置查询数据,无需将数据移动到独立的分析系统。查询执行可在纯粹基于内存的架构上平行运行,大多数结果在几秒内即可返回。您将会发现,它已被许多知名公司采用,例如 FacebookAirbnbNetflixAtlassianNasdaq

Presto 徽标

Presto 的发展历史

Presto 最初作为 Facebook 的项目启动,针对 300PB 的数据仓库运行交互式分析查询,使用大型基于 Hadoop/HDFS 的集群构建。在构建 Presto 之前,Facebook 使用的是 2008 年创建并推出的 Apache Hive,为 Hadoop 生态系统带来熟悉的 SQL 语法。Hive 在将复杂的 Java MapReduce 作业简化成类似 SQL 的查询方面对 Hadoop 生态系统有着重大影响,同时还能够执行大规模的任务。但是,它未针对交互式查询所需的高速性能进行优化。

在 2012 年,Facebook 数据基础设施组构建了 Presto,这种交互式查询系统能够以 PB 级规模快速运行。它于 2013 年春季在全公司范围内推广。2013 年 11 月,Facebook 将 Presto 作为 Apache 软件许可证下的开源软件,任何人都可以从 Github 上下载。今天,Presto 已成为在 Hadoop 上进行交互式查询的流行选择,获得了来自 Facebook 和其他组织的大量贡献。Facebook 的 Presto 实施的使用者超过一千名员工,他们每天运行超过 30000 次查询,处理的数据达到 1PB。

 

Presto 工作原理

Presto 是在 Hadoop 上运行的分布式系统,使用与经典大规模并行处理 (MPP) 数据库管理系统相似的架构。它有一个协调器节点,与多个工作线程节点同步工作。用户将其 SQL 查询提交给协调器,由其使用自定义查询和执行引擎进行解析、计划并将分布式查询计划安排到工作线程节点之间。它设计用于支持标准 ANSI SQL 语义,包括复杂查询、聚合、联接、左/右外联接、子查询、开窗函数、不重复计数和近似百分位数。

查询编译之后,Presto 将请求处理到工作线程节点之间的多个阶段中。所有处理都在内存中进行,并以流水线方式经过网络中的不同阶段,从而避免不必要的 I/O 开销。添加更多工作线程节点可提高并行能力,并加快处理速度。

为了使 Presto 可扩展到任何数据源,它的设计采用了存储抽象化,以便于轻松地构建可插入的连接器。因此,Presto 拥有大量连接器,既可用于非关系数据源,例如 Hadoop 分布式文件系统 (HDFS)、Amazon S3、Cassandra、MongoDB 和 HBase,又可用于关系源,例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。数据在其存储位置接受查询,无需将其移动到独立的分析系统中。 

Presto 和 Hadoop

Presto 是一种开源分布式 SQL 查询引擎,设计用于对 HDFS 和其他源中的数据进行快速交互式查询。与 Hadoop/HDFS 不同,它没有自己的存储系统。因此,Presto 与 Hadoop 互补,有些机构同时使用这两种产品来解决更广泛的业务挑战。Presto 可以与 Hadoop 的任何实施一起安装,并封装在 Amazon EMR Hadoop 分发中。

 

什么人使用 Presto?

在很多知名组织,Presto 以非常大的规模用于其生产中。您将会发现其中包括 FacebookAirbnbNetflixAtlassianNasdaq 以及更多。Facebook 的 Presto 实施的使用者超过一千名员工,他们每天运行超过 30000 次查询,处理的数据达到 1PB。Netflix 平均每天在其 Presto 集群中运行约 3500 条查询。Airbnb 构建了 Airpal 并开放其源代码,这种基于 Web 的查询执行工具可在 Presto 中使用。在其论坛以及 Facebook 的 Presto 页面上还有更大的 Presto 社区。

在云端部署 Presto

Presto 是理想的云端工作负载,因为在云中能够实现性能、可扩展性、可靠性、可用性以及大型规模经济。只需几分钟即可启动 Presto 集群。您不必担心节点预置、集群设置、Presto 配置或集群优化。

 

通过 Amazon Web Services 在云端构建您的 Presto 实施

Amazon EMRAmazon Athena 是在云端部署 Presto 的最佳位置,因为它可执行集成,为您严格测试 Presto,并可获得 AWS 的可扩展性、简单性和成本效益。使用 Amazon EMR,您可以在几分钟内启动 Presto 集群,而无需执行节点预置、集群设置、Presto 配置或集群优化。EMR 让您可以在短短几分钟内预置一个、上百个或成千上万个计算实例。通过 Amazon Athena,您可使用 AWS 无服务器平台部署 Presto,没有服务器、虚拟机或集群需要设置、管理或调优。只需指向您在 Amazon S3 上的数据,定义架构,并使用内置查询编辑器或使用现有的商业智能 (BI) 工具启动查询。Athena 自动并行执行您的查询,并动态地扩展资源以使查询快速运行。您只需为实际运行的查询付费。

启动您在 AWS EMR 上的首个 Presto 集群或您的首个使用 Amazon Athena 的查询以开始上手

Step 1 - Sign up for an AWS account

注册 AWS 账户

立即享受 AWS 免费套餐
icon2

了解有关 Amazon EMR 和 Amazon Athena 的更多信息

阅读此处关于 EMR 上的 Presto 的更多信息以及此处关于 Amazon Athena 的更多信息。观看此处将 Presto 部署在 EMR 上的会话和此处将其部署在 Amazon Athena 上的会话。观看关于如何在 AWS 上构建 Presto 集群的客户会话,包括 NetflixAtlassianOLX

icon3

构建您的首个 Web 应用程序

您的数据上传到 Amazon S3、使用 EMR 创建 Presto 集群,或使用 Athena 编写您的首个 Presto 查询。拥有 POC 并且想与某人交谈? 联系我们  

开始使用 AWS 上的 Presto

立即试用 EMR 立即试用 Athena
还有更多问题?
联系我们