什么是 PrestoDB?

什么是 PrestoDB?

建议:如果您想了解有关使用 Presto 的更多信息,请获取您的 PrestoDB 参考卡 .

介绍

数据是当今企业的命脉。它有许多不同的形状和大小——存储在表格中的结构化数据、对象和文​​件等非结构化数据、来自移动和物联网设备的边缘数据、云中的数据以及本地数据。生成和存储的数据量正在爆炸式增长——以多种方式和地点创建和存储的数据比以往任何时候都多。

但存储数据仅仅是开始。除了生产和收集数据外,公司还需要对其进行组合和分析。他们需要对其存储的数据进行多次实时洞察,以做出关键业务决策。为此,公司必须利用可以跨许多不同数据源快速查询数据的工具。

虽然结构化查询语言 (SQL) 可能并不新鲜,但它是一种通用查询语言,现在比以往任何时候都更受欢迎,可以满足这一需求。由 IBM 研究人员 Raymond Boyce 和 Donald Chamberlin 在 1970 年代开发的 SQL 是标准并且是最广泛使用的数据库编程语言。 SQL 探索数据并帮助理解它。它可以提供组织需要的那些实时、可操作的见解。

这就是 Presto 的用武之地。 Presto 是一个快速、灵活的分布式 SQL 查询引擎。它提供 ANSI SQL 并支持查询其所在位置的数据,包括 Hadoop、Hive、AWS S3、Cassandra、MongoDB、Elasticsearch 等。这意味着您可以在任何这些数据源上运行标准 SQL。

Presto 设计为交互式的,可以处理数据湖、仓库或其他数据源中的 PB 级数据。大多数查询可以近乎实时或实时完成。它可以让您快速了解任何类型和任何规模的数据,而且它也是完全开源的。

PrestoDB:简史

Presto 项目来自 Facebook。早在 2012 年,Facebook 就利用 Apache Hive 对海量数据集执行临时数据分析。随着他们的数据集继续呈指数增长,该团队发现 Hive 太慢了,因为 Hive 的基础——MapReduce——当时需要将中间数据集持久化到磁盘上。这意味着大量的磁盘 I/O 用于临时的中间结果集,而这将不起作用。

因此,Facebook 团队开发了 Presto,一种新的分布式 SQL 查询引擎,设计为内存引擎,无需为单个查询保留中间结果集。与 Hive 不同,Presto 可以更快地处理相同的查询订单,许多查询以亚秒级延迟完成。

2013 年,Facebook 开源了 Github 仓库下的 Presto ” 预数据库 ”。早期采用者和合作者包括 AirBnB、Uber、Twitter 和 Netflix 等公司。今天,数百家公司已经公开展示了在生产中使用 Presto。由于其灵活性和可扩展性,Presto 可以支持各种 SQL 用例。组织通常从 Presto 集群开始进行交互式、即席查询,然后从那里扩展。

今天 Presto 由 Linux 基金会的 Presto 基金会 . Presto 基金会的章程确保了项目的公开治理和透明度,以及没有任何供应商可以控制它的事实。围绕 Presto 形成了一个完整的行业联盟,Presto 基金会的现有成员包括 Facebook、Uber、Twitter、阿里巴巴、Alluxio、Ahana、Upsolver 和英特尔。欢迎任何公司加入,以帮助推动 Presto 技术和社区,并支持开发和社区流程。

潜入 Presto 技术

SQL 是新的 SQL

Presto 是一个在机器集群上运行的联合分布式 SQL 查询引擎。它支持对大量数据进行交互式、即席分析。 Presto 支持在 Hive、AWS S3、Hadoop、Cassandra、关系数据库、NoSQL 数据库甚至专有数据存储等数据源中查询数据。 Presto 允许用户访问来自多个来源的数据,从而允许在整个组织中进行分析。

作为一个分布式 SQL 引擎,Presto 如此吸引人。 SQL 是数据系统的通用语言。即使在 40 多年之后,SQL 不仅经受住了时间的考验,而且越来越受欢迎,因为它是处理任何数据库的最常见方式。使用 ANSI SQL 标准对于像 Presto 这样的联合系统很重要,因为您可以继续使用常见的命令,如 SELECT、UPDATE、DELETE、INSERT 和 WHERE。

因为它基于 SQL,所以 Presto 易于访问,不需要任何高级或新的学习。这种 SQL 合规性立即启用了许多用例。适用于其他数据库的 SQL 代码可能会在 Presto 上运行,开箱即用,无需对 SQL 进行任何更改。数十种流行的商业智能 (BI) 工具将与 Presto 引擎一起使用,无需任何额外的集成。

Presto:联合查询引擎

随着数据量、数据格式类型和数据存储类型的不断增长,联邦数据库变得越来越重要。联合数据库是将许多不同的数据库连接到单个数据库中的系统,然后可以对其进行查询。

沿着这些思路,Presto 是一个联合查询引擎,可以跨多个外部数据源查询数据。它可以就地访问数据。换句话说,您无需移动数据即可使用 Presto 进行查询。在成本、时间和资源方面,这非常有价值。 Presto 可以提供对所有数据源的统一访问和联合查询,而不是将您的数据移动或“ETL”到一个地方进行查询。

Presto 连接器今天包括十几个,而且这个数字还在继续增长。这些连接器适用于数据库、对象存储、数据湖、流数据和更多类型的数据系统。事实上,您可以为几乎任何数据系统构建 Presto 连接器。

How to use Prestodb

Figure: A few examples of data sources you can query with Presto. Logos taken from respective company websites

Presto 可以查询单个数据源,也可以查询跨多个数据源的连接,例如 AWS S3 和 MySQL 或 Kafka 和 MongoDB。您可以查询传统数据源和非关系数据源(MongoDB、Elasticsearch)和数据湖(HDFS、AWS S3)。这是 Presto 的最大优势之一——您可以跨不同的数据模型进行查询,而无需移动数据。

Presto 架构和技术概念

您的 Presto 集群位于您的 BI 工具(Superset、Tableau、Looker 等)和数据源之间。正如我们所讨论的,Presto 跨许多不同的数据源进行查询,并将该数据提供回您组织的 BI 工具。

Run SQL on Presto

Image: Your Presto cluster sits between your BI tools and your data sources

完整的 Presto 安装包括一名协调员和多名工作人员。查询从客户端(例如 Presto CLI)提交给协调器。协调器解析、分析和计划查询执行,然后将处理分配给工作人员。

BI connectors for data lake house

Image: Technical architecture of Presto Coordinator & Presto Workers

部署中需要四种类型的 Presto 数据源:

  • 连接器: 连接器使 Presto 适应 Hive 或关系数据库等数据源。 Presto 包含多个内置连接器,包括 JMX、Hive 连接器和 TPCH 连接器。
  • 目录: Presto 目录包含模式并通过连接器引用数据源。
  • 架构: 使用模式来组织表以进行查询。
  • 桌子: 一组无序的行组织成具有类型的命名列

执行查询

让我们看看执行查询时会发生什么。

例子: 如果您的查询将许多大型表连接在一起,则可能需要多个阶段来执行,将表聚合在一起。在每个执行阶段之后可能会有中间数据集。与 Hive 等旨在将中间结果持久保存到磁盘的分布式查询引擎不同,Presto 通过在工作机器的内存中执行查询来节省时间。它在那里对中间数据集执行操作,而不是将它们持久化到磁盘。

使用 Presto,数据可以驻留在许多不同的地方,Presto 在您的工作人员之间执行内存中的执行,并根据需要在工作人员之间移动数据。此过程避免了在各个阶段之间从磁盘写入和读取,从而加快了查询执行时间。

查询执行模型的关键部分如下:

  • 陈述: 当 Presto 解析一条语句时,它将它转换为一个查询并创建一个分布式查询计划,然后将其实现为在 Presto 工作程序上运行的一系列相互连接的阶段。
  • 阶段: 当 Presto 执行查询时,它通过将执行分解为阶段层次结构来实现。
  • 任务: 任务是 Presto 架构中的“工作马”,因为分布式查询计划被解构为一系列阶段,然后将这些阶段转换为任务,然后执行或处理拆分。
  • 分裂: 任务对作为更大数据集的部分的拆分进行操作。分布式查询计划的最低级别的阶段通过连接器的拆分检索数据,分布式查询计划的较高级别的中间阶段从其他阶段检索数据。
  • 司机: 驱动程序对数据进行操作并组合操作员以产生输出,然后由任务聚合,然后交付给另一个阶段的另一个任务。
  • 操作员: 运算符使用、转换和生成数据。
  • 交换: Exchanges 在 Presto 节点之间为查询的不同阶段传输数据。

常见的 Presto 用例

Presto 用于广泛的分析用例,特别适用于交互式和即席查询。以下是我们今天看到的五个最常见的用例。

即席查询

无论您的数据位于何处,都可以使用 SQL 随时运行即席查询。 Presto 允许您查询数据的存储位置,因此您不必将数据 ETL 到单独的系统中。借助 Presto 连接器及其就地执行,平台团队可以快速提供对分析师感兴趣的数据集的访问。伴随着这种访问,Presto 的强大功能可以在几秒钟而不是几小时内运行查询,并且分析师可以快速迭代创新假设随着对任何数据集的交互式探索,驻留在任何地方。

报告和仪表板

跨多个来源查询数据,为自助式商业智能构建报告和仪表板。 Presto 使数据科学家和分析师能够自行跨来源查询数据,因此他们不依赖于数据平台工程师。

使用 SQL (ETL) 进行转换

跨多个数据源聚合数 TB 的数据,并使用 Presto 针对该数据运行有效的 ETL 查询。代替传统的批处理系统,使用 Presto 来运行资源高效和高吞吐量的查询。

数据湖分析

无需转换即可直接在数据湖上查询数据。 Presto 使您能够查询数据湖中的任何类型的数据,包括结构化和非结构化数据。

跨多个数据源的联合查询

跨许多不同的数据源查询数据,包括数据库、数据湖、湖屋、本地或云中。 Presto 允许您将答案聚合回 Presto 内存数据库中。

今天谁在生产中运行 Presto?

有100多家公司。以下是一些真实的用例:

首先,有 优步 . Presto 支持分析 **** 优步的数据湖 并且使用如此广泛,以至于大约一半的公司每月至少登录一次 Presto 来做一些对他们的工作很重要的事情。

让普 是一个移动应用营销平台,它使用程序化广告来获取新用户并通过相关广告重新定位这些用户。它位于广告商和他们的受众之间,因此媒体广告空间的实时竞价对其业务至关重要。作为投标周期的一部分,Jampp 生成的数据量很大——每天跟踪 1.7B 事件,接收 550K/秒的请求,AWS 弹性负载均衡器每天处理 100TB 的数据。 PrestoDB 在其数据基础架构中发挥着关键作用。 Jampp 依靠 EMR Presto 进行即席查询,每天对超过 600TB 的可查询数据执行超过 3K 次即席查询。

来福车 使用 Presto 为数千个仪表板提供动力,每周约有 150 万活跃用户在这个平台上运行数百万次查询。在基于 S3 的数据湖中存储了 60 PB 的可查询事件数据,每天使用 Presto 扫描大约 10 PB 的原始数据。

推特 通过将机器学习算法应用于约 1000 万个历史 Presto 查询,开发了一种高度可扩展的查询预测器服务,以根据 CPU 时间和峰值内存字节对查询进行分类。该服务有助于提高 Presto 集群的性能,并在商业智能仪表板上提供预期的执行统计信息。

领英 使用智能逻辑抽象层扩展了其 Presto Hive 目录,该抽象层能够通过使用两个核心组件 Coral 和 Transport UDF 来推理带有 UDF 的逻辑视图。 Coral 是一个视图虚拟化库,由 Apache Calcite 提供支持,它使用其逻辑查询计划来表示视图。

LinkedIn 利用 Coral 抽象将视图表达式语言与执行引擎分离,从而在 Presto 内部执行非 Presto-SQL 视图,并实现动态查询重写以进行数据治理和查询优化。

Presto 入门

Presto 是开源的。因此,您可以 手动安装 Presto 并自己开始。有一个 几个教程 如果您这样做,可以帮助您入门。

或者,您可以使用托管服务,例如 阿哈娜云 . Ahana Cloud 是适用于 AWS 的完全集成的云原生托管 Presto 服务。它简化了 Presto,因此您的团队可以在整个企业中获得自助式 SQL 分析——数据分析师、数据工程师、数据科学家和产品经理可以使用 Ahana Cloud。

Figure: Ahana Cloud reference architecture

Ahana SaaS 控制台使用户能够创建、部署、调整大小、停止、重新启动和终止一个或多个 Presto 集群以进行端到端生命周期管理,并在取消配置集群时保留集群配置和元数据信息。

Ahana Cloud 使用跨账户角色在您的 AWS 账户中编排和管理您的 Presto 集群。您还可以在 Ahana 中定义和管理数据源,并通过单击按钮将它们与任何集群连接或分离。 Ahana 负责配置和重新启动集群。连接外部目录 — Hive Metastore 和 Amazon Glue、Amazon 数据库服务 RDS / MySQL、RDS / PostgreSQL、Elasticsearch 和 Amazon Redshift。

如果您有 AWS 账户,您可以在 30 分钟内启动并运行 Presto。 免费试用 .

更多资源

点播网络研讨会:使用 AWS 和 Ahana Cloud 在 30 分钟内从 0 到 Presto

加入 Presto 聚会组

免费 O'Reilly 电子书:Presto 学习和操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/36274/28411410

posted @ 2022-09-14 10:29  哈哈哈来了啊啊啊  阅读(373)  评论(0编辑  收藏  举报