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

概览

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 客户端.

上一篇:Oracle12c Linux x86-64安装体验


下一篇:针对IDEA快速构建Maven工程报错问题快速解决办法:No archetype found in remote catalog. Defaulting to internal catalog