trino(prestoSQL 329)文档 - 1.概览

Presto是一个用于查询大规模分布式数据集的高性能SQL查询引擎,设计不用于常规事务处理或在线分析处理(OLAP)。它支持多种数据源,包括Hadoop、传统数据库等。Presto的工作原理涉及协调器、工作者、连接器、数据源、查询模型等概念。查询通过分阶段执行,任务在工作者节点上并行处理,数据通过交换在节点间传输。Presto适合进行大数据分析和报表生成。
摘要由CSDN通过智能技术生成

Presto 是一个分布SQL查询引擎,设计用来查询大的分布式数据集,分布在一个或更多不同总类的数据源.

1.1 使用案例

这节全面介绍Presto,这样潜在的管理员和用户知道可以在Presto得到什么期待.

Prosto 不能做什么

至从Presto被社区很多成员称为数据库,这是有意义的开始定义Presto不是什么.

不要误解事实上Presto 解决SQL用用它提供标准数据库的特性. Presto并不是一般用途的关系型数据库.它不能代替数据库位置,像MySQL, PostgreSQL 或Oracle. Presto不是被设计处理OTPL. 对于很多其它为数仓或分析设计的数据库总是这样.

Presto可以做什么

Presto是一个工具,设计用来使用分布式查询大量数据.如果你工具TB或PB的数据,你可能使用工具来与Hadoop和HDSF交互. Presto被设计作为另外选择工具,查询HDFS使用MapReduce管理任务,像Hive或Pig, 但是Presto 没有限制访问HDFS. Presto可以有一个扩展的操作在不同类型的数据源,包含传统关系性数据库和其它数据源像Cassandra.

Presto被设计处理数仓数据和分析:数据分析,聚合大量数据生成报告.这些工作量通常分类到OLAP中.

1.2 Presto概念

介绍

为弄懂Persto,你需要首先了解Persto文档中到处使用术语和概念.

然而这是非常容易了解语句和查询,作为终端用户你应该熟悉这些概念,像stages 和拆分利用Presto来高效执行查询.作为Presto管理者或Presto做贡献者,你应该明白Presto概念怎样stage map到task,和怎样tasks包含一组driver来处理数据.

这部分提供固定定义为遍及Presto核心概念引用,并且这部分是从总体到细节排序.

Server类型

有两种Presto Server: coordinators 和workers.下边区域来解决他们的不同.

Coordinator

Presto coordinator 负责转换语句,设计查询,管理persto工具节点.这是presto安装的大脑,并且 也是一个客户端连接提交执行语句的节点.每个Presto安装一定有一个coordinator 和一个或多个woker.对于开发或测试目的,单独一个Presto实例可以配置来执行两个角色.

coordinator 保持跟踪每一个活着的woker和 协调的执行查询. coordinator 创建一个涉一系列阶段逻辑模型,这样转换为一系列任务运行在集群中worker.

Coordinator与worker交互使用REST API.

worker

Presto worker 在Persto安装中是一个server, 它负责执行任务并且处理数据.工具节点获得数据从connector 和彼此之间交互的中间数据.coordinator负责获得结果从woker并且返回最终结果到client.

当Presto worker处理开始,它通知自己来查找在coordinator上的server,使用它给presto coordinator来执行任务.

worker与其它worker交互并且Presto coordinator使用REST API.

数据源

通过这个文档,你会读到一些术语,像connector, catalog, schema, and table. 这些基础概念覆盖一部分数据源Presto模型并且被下文描述.

Connector

connector 使Presto适用于数据源,像Hive或关系型数据库.你可以想起connector 就想起数据库的driver. 它是Presto SPI的一个实现,允许Presto与资源交互使用标准API.

Persto包含多种内建connectors: JVM connector,系统 connector可以提供访问系统内建表, TPCH connector设计用来服务 TPC-H benchmark 数据.很多第3方开发都 做贡献connector,导致 Presto 访问数据有大量数据源.

每个 catalog 关联一个专用的connector.如果你检查catolog配置文件,你看到每个包含强制属性connector.name,它被catalog 管理使用来创建connector 给catalog. 这是可能的有不至一个catalog 使用相同的connector 来访问两个不同实例相似的数据库.例如,如果你有两个hive集群,你可以配置两个catalog在一个Presto集群,两个都使用hive connector,你查询数据从hive集群中,甚至里边有相同SQL查询.

Catalog

Presto catalog 包含schemas 和引用数据源的connector. 例如你可以配置MX catalog来提供JMX 访问信息通过JMX connector.当你运行在Presto中SQL语句,你运行它在一个或多个catagory.另一个catalogs 怨念Hive catalog来连接hive数据源.

当在Presto中定位table,完整的表名问题从catalog的根开始.如完整的表名hive.test_data.test指向table testtest_data结构在catalog hive中.

Catalogs 定义属性文件保存在Presto 配置目录中.

Schema

Schemas 是组成表的一种方式.同时, catalog 和schema定义一组表可以被查询.当访问 Hive或关系数据库像Mysql用Presto, schema 翻译成相同的概念在目标数据库.connectors 的其它类型可能用选择组织表到schemas,一种对底层数据是有意义的方式.

Table

table是一种没有顺序的行,它可以组织到命名带有类型的列. 和任何关系型数据库相同.数据源到表的映射被定义是通过connector.

查询模型

Presto 查询SQL语句和转变这些语句到查询语句,被执行通过分布集群的coordinator 和workers.

Statement

Presto 执行ANSI兼容的SQL 语句.当Presto文档 指向一个语句 ,它指向语句当定义ANSI标准SQL,由语句,表达式和谓语组成.

一些读者可能好奇为什么这部分列出单独的概念为statements 和查询.这是必要的因为,在Presto中statements 只是指向代表SQL语句的文本.当语句被执行,Presto创建一个查询,伴随一个查询计划,然后分发到一系列worker.

Query

当Presto转换成statement,它转换它为一个查询语句,并且 创建分发查询计划,它然后被实现通过一系列联通的stages运行在Presto worker.当你检索关于Presto中的语句,你可以收到每个组件的快照,它涉及在生成一组结果集来响应statement.

statement 和query中的不同非常简单.statement可以被认为为一个SQL文本,传递给Presto,当查询指向配置并且被实例化组件来执行statement. 查询包含stages,task和split,connector,和其它组件并且数据源工作一致在产生的结果.

Stage

当Presto执行query,它做通过打散执行到一个层级的stage.例如,如果Presto需要聚合数据从十亿行保存到hvie,他做通过创建stage 根到聚合多种不同 输出,所有这些被设计来实现不同区域的分布查询计划.

stages 层级包含查询像树.每个查询有根stage,它负责聚合从其它stage的输出.stage 是coordinator 使用分布式查询计划成模型,但是stage他们自己不运行在Presto worker.

Task

上部分提到的stage模型是分布查询一部分,但是stage他们自己不执行在Presto worker. task是"主力"在Presto架构,作为分布查询计算被解构成一系列stage,它然后被翻译成task,作为或处理split.Presto task有输入和输出,并且当stage可能被执行以并行方式通过一系列tasks,一个任务被执行以并行用一系列driver.

split

Task运行在split上,它是大数据集的一部分. Stage在分布查询计划获取数据的最低级别,通过来至connector的split,并且中间stage在分布查询计划从其它stage上获取数据高级级别.

当Presto安排query, coordinator 查询connector 为一列表可用的split. coordinator 保持跟踪哪台机器运行任务,和被哪一个任务处理来切分.

Driver

任务包含一个或多个并行driver.driver扮演数据和组合operator 生成输出然后被任务聚合,再传递到其它stage的 另外任务. driver 是一系列操作实例,或你可以认为driver作为在内存中物理 组的operator.它是最低级别并行在Presto架构中.drver有一个输入和一个输出.

Operator

Operator 消费,转换和生成数据.例如,表可以扫描获得数据从connector ,并且生产数据,可以被消费通过其它 operator ,并且过滤operator 消费数据并且生成子数据通过输入数据应用预测.

Exchange

Exchange传输数据在 Presto nodes 之间为不同的stage查询.任务生成数据 到输出buffer并且消费数据从其它任务用exchange 客户端.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值