系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

Presto官方版

v0.245.1

Presto官方版

  • 软件大小:24.2 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2022-01-27 15:11
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

Presto简介

Presto是一款适合大数据的分布式SQL查询引擎。它支持MongoDB、My SQL、Oracle、Postgre SQL、SQL Server连接器、TPCDS连接器和TPCH连接器。用户可以访问各种数据库查询资源,并在外部MySQL数据库中查询和创建表。这可用于连接不同系统(如MySQL和Hive)之间或两个不同MySQL实例之间的数据,还允许MongoDB在Presto中用作表;该软件提供内置的系统访问控制,系统访问控制插件将在任何连接器级别授权之前在全局级别强制授权。您可以使用Presto中的内置插件之一,也可以根据“系统访问控制”中的指南,提供自己的插件并提供Presto验证程序。Presto vefiers是用于正确运行查询和验证的工具。它可以用来测试新的Presto版本是否产生正确的查询结果,或者成对的Presto查询是否具有相同的语义。在每个Presto版本中,将运行Vefier以确保没有正确的回归!

Presto软件功能

1.什么是PRESTO?

Presto是一个开源的分布式SQL查询引擎,用于对从GB到PB的各种数据源运行交互分析查询。

Presto是专门为交互式分析而设计和编写的。可以扩展到脸书等组织,实现商业数据仓库的速度。

驱动Presto项目社区由presto Foundation支持,presto Foundation是一个具有开放和中立治理的非营利组织,由Linux基金会托管。

2.它能做什么?

Presto允许您查询数据存在的位置,包括Hive、Cassandra、关系数据库甚至专有数据存储。Presto查询可以组合来自多个来源的数据,以便在整个组织中进行分析。

Presto适合预期响应时间从几秒到几分钟不等的分析师。Presto打破了使用昂贵的商业解决方案进行快速分析或使用需要大量硬件的慢速“免费”解决方案之间的错误选择。

3.谁用的?

使用脸书Presto交互查询多个内部数据存储(包括其300PB数据仓库)。每天,1,000多名脸书员工使用Presto运行3万多个查询,每天总共扫描超过1 PB。

包括Airbnb和Dpbox在内的领先互联网公司正在使用Presto。

Presto软件特色

Presto是一个通过使用分布式查询来有效查询大量数据的工具。如果您使用TB或PB数据,您可以使用与Hadoop和HDFS交互的工具。Presto旨在取代使用MapReduce作业管道(如Hive或Pig)查询HDFS的工具,但Presto不限于访问HDFS。Presto可以并且已经扩展到在各种数据源上运行,包括传统的关系数据库和其他数据源(如Cassandra)。

Presto旨在处理数据仓库和分析:数据分析,汇总大量数据并生成报告。这些工作负载通常被归类为在线分析处理(OLAP)。

Presto使用说明

Presto定义了一个连接器API,允许Presto使用连接器实现查询任何数据源。的现有连接器API提供了基本的谓词下推功能,允许连接器对基础数据源执行筛选。

但是,现有的谓词下推函数存在一定的局限性,限制了连接器的功能。可推送内容的表达是有限的,连接器根本无法改变计划的结构。

此图显示了过去调度程序和连接器是如何交互的:

首先,Presto只支持通过连接器提供的方法进行谓词下推。如果/

这增加了创建和连接的复杂性。此外,正如我们稍后将展示的,我们不仅想要向下推送工作,还想要将新工作添加到查询计划中。当前的调度模型确实支持许多有用的连接器驱动的计划变更。

其次,可以下推的谓词和运算符的范围有限。只有可以用称为TupleDomain的数据结构表示的谓词才能被下推。此数据结构仅支持“与”谓词,该谓词确定变量/列是否在值集中(范围或相等)。因此,没有办法描述像& # 8217;A[1] IN (1,2,3)& # 8217;还是复杂的谓语' ' A like & # 8216一个Varchar % & # 8217。

一种更灵活的方法是将当前表示为图像语法树(AST)的整个表达式向下推。这种方法的一个问题是AST会随着时间的推移而发展,例如,当添加新的语言函数时。此外,AST不包含类型,足以执行功能分析。

随着最近动态特征注册的增加,特征现在可以被分解成不同的实现。动态函数注册允许用户编写自己的SQL函数。例如,当使用此函数的查询仍在运行时,用户可以在另一个会话中更新SQL函数的定义。如果您想在调用时执行函数解析,您可能会在同一个会话和查询中使用不同的实现。如果要支持物化视图,还需要确保数据读取器和写入器之间的函数版本一致。

我们通过将functionHandle解析作为可序列化的形式存储在表达式表示本身中来解决这个问题。当我们重用包含这个函数的表达式时,它可以一致地引用一个函数。

类型也有类似的问题。连接器无法通过元数据安全地知道变量的类型。描述变量的元数据在执行过程中可能不可用或被更改。

我们逐步提高了Presto策划程序在0.217到0.229版本之间下推更具表现力作品的能力。我们也相应地更新了连接器,这样它们就可以被理解和规划为子树。

向连接器公开计划子树。

Presto通过首先将其解析为图像语法树(AST)来执行SQL查询。AST被转换成逻辑计划树,表示查询中包含的关系代数。关系代数表示没有优化,并且缺少足够的物理布局来执行查询。

Presto使用优化器列表将逻辑计划转换为优化的物理计划。每个计划优化器可以在整个计划树的子树中运行,并根据启发式或统计用更优化的子树替换它。优化器可以保存由句柄提供的一组连接器执行的物理数据(例如,ConnectorTableHandle、ConnectorTableLayoutHandle、ConnectorPartitionHandle、& # 8230;)。

与其他一些SQL引擎不同,Presto没有明确设置逻辑计划和物理计划之间的边界。相反,有一些关键的优化器可以将逻辑计划转化为物理计划。

PickTableLayout和AddExchanges是两个重要的优化器。

TableLayout通过调用连接器提供的API方法,将计划谓词下推到表扫描中的getTableLayout。它还用于从连接器获取物理布局。GetTableLayout返回一个LayoutHandle,连接器将被填充关于扫描返回的数据结构的信息。Presto LayoutHandle稍后将用于计划、优化和执行查询。

AddExchanges将数据重组(数据交换)运算符添加到查询执行中。这一重要步骤决定了如何并行执行查询,以及如何重新分配数据,以便在查询的每个阶段进行处理。Presto中的执行阶段通常会打乱分区键上的数据,这是处理查询计划的下一部分所需要的。AddExchanges依赖于连接器返回的句柄来确定要添加到计划中的适当位置和交换类型。

依靠PickTableLayout执行谓词下推和物理计划都是非常严格的,因为连接器除了基本的谓词下推之外不能修改计划。

现在,Presto允许连接器向Presto引擎提供优化规则,从而允许连接器引入任意优化。为了防止连接器提供的优化器意外更改另一个连接器的子计划,有一些限制:

1.暴露给presto-spi模块的平面节点。

2.属于连接器的平面节点。

满足上述规则的子最大树将连接器提供的优化规则转换为更优化的形式:

请注意,上述规则仅适用于以maxSubPlan作为输入的优化器。如果优化器可以生成一个包含属于另一个连接器的节点的新计划,该连接器很可能会出现(通常在视图扩展期间)。在这种情况下,表可以从虚拟表中读取数据,虚拟表将来自几个不同数据源的数据组合在一起。表扫描虚拟表可以扩展到一个新的子树,这个子树可以从双方的联合表中扫描出来。扩展后,新生成的计划节点的优化可以通过其所属的连接器进行处理,从而实现优化后的子计划。

连接器规则将转换最大计划树。在谓词下推的情况下(以MySQLConnector为例),连接器可以存储MySQL谓词,这些谓词可以在内部作为SQL表达式处理,MySQLConnectorLayoutHandle并返回一个TableScan节点。

引擎将在关键计划转换点应用连接器优化规则:

在AddExchange开始转换为物理计划之前,所有在逻辑计划上运行的规则都将应用一次。此时,我们可以扩展视图并做大量工作。

在优化周期结束时,需要稍后应用一些依赖于物理的优化。例如,我们可能只想将聚合的一部分下推到连接器,以便仍然从并行执行中受益。添加交换节点后,聚合阶段将被拆分。

更具描述性的表达语言

我们还用新的表达式替换了基于AST的表达式roxpression。RowExpression是完整的,可以在多个系统之间共享。新表示有几种子类型:

的安全内部通信

您可以将Presto群集配置为使用安全通信。Presto节点之间的通信可以通过SSL/TLS进行保护。

内部SSL/TLS配置

SSL/TLS是在配置文件中配置的。使用相同的属集在工作节点和协调节点上配置SSL/TLS。必须配置群集中的每个节点。未配置或配置不正确的节点将无法与群集中的其他节点通信。

要为Presto内部通信启用SSL/TLS,请执行以下操作:

1.禁用HTTP端点。

http-.http.enabled = false

警告

您可以在启用http的同时启用HTTPs。在大多数情况下,这是一个安全漏洞。如果您决定使用此配置,您应该考虑使用防火墙来限制对HTTP端点的访问,使其仅限于那些应该允许使用该端点的主机。

2.将群集配置为使用群集节点的完全限定域名(fqdn)进行通信。这可以通过两种方式之一来实现:

如果DNS服务配置正确,我们可以让节点使用从系统配置()中获得的主机名向协调器介绍自己。主机名& # 8211;完全合格域名

节点内部地址来源= FQDN

您还可以手动指定每个节点的标准主机名。每台主机都不一样。主机应该位于同一个域中,以便轻松创建正确的SSL/TLS证书。例如:coordinator.example.com、worker1.example.com和worker2.example.com。

node . internal-address = & lt;节点FQDN >:

生成Java密钥库文件。每个Presto节点必须能够连接到同一群集中的任何其他节点。您可以使用每个主机的标准主机名为每个节点创建唯一的证书,创建包含所有主机的所有公钥的密钥库,并为客户端指定它(请参见下面的步骤8)。在大多数情况下,在证书中使用通配符更容易,如下所示。

4.在Presto集群中分发Java密钥库文件。

5.启用HTTPS端点。

6.把发现u改成HTTPS。

discovery . u = https://& lt;协调员FQDN >:

7.配置内部通信以要求HTTPS。

内部沟通。https.required = true

8.将内部通信配置为使用Java密钥库文件。

内部沟通。https . Keystore . path = < Keystore path >:

内部沟通。https.keystore.key = < Keystore密码>:

与Kerbes的内部SSL/TLS通信

如果启用了Kerberos身份验证,除了SSL/TLS之外,您还应该为内部通信指定有效的Kerberos凭据。

internal-communication . kerb es . enabled = true

注意

用于内部Kerbes身份验证的服务名和密钥表文件取自Kerbes身份验证,并记录在Kerbes http..authentication.krb5名称和http..then ating . krb5 . key tab分别为。确保在工作节点上也完成了Kerbes设置。内部通信的Kerberos主体是通过http将运行Presto的节点的主机名和Kerberos配置中的默认域附加到其上而构建的..then ating . krb5-name。

启用SSL/TLS功能

启用加密将影响性能。性能下降可能因环境、查询和并发性而异。

对于不需要在Presto节点之间传输太多数据的查询(例如),影响可以忽略。从表中选择计数(*)

但是,需要在节点之间传输大量数据的CPU密集型查询(例如,需要重新分区的分布式连接、聚合和窗口函数)可能会对性能产生很大影响。减速速度可能从10%到100%+,具体取决于网络流量和CPU使用情况。

高级调谐

在某些情况下,更改随机数的来源将显著提高性能。

默认情况下,TLS加密使用/dev/urandom系统设备作为熵的来源。该设备的吞吐量有限,因此在网络带宽较高的环境(如InfiniBand)中可能会成为瓶颈。在这种情况下,建议SHA1PRNG尝试通过http-. https . secure-random-algorithm在config.pperties协调器和所有工作程序上设置随机数生成器算法,并切换到,

http . https . secure-random-algorithm = sha1 png

请注意,该算法从阻塞/开发/随机设备获取初始种子。对于没有足够熵来播种SHAPRNG算法的环境,可以通过添加genus Java . SECURITY . EGD/dev/uran DOM将源代码更改为jvm.config:

-djava . secuti . EGD = file:/dev/uran DOM

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件