[1]-Concepts

原文:https://prestodb.io/docs/current/overview/concepts.html
其他参考:https://www.cnblogs.com/sorco/p/7060166.html

 

 

Server Types

两种类型:coordinators、 workers.

Coordinator

主要负责:parsing statements, planning queries, managing Presto worker nodes.

作为Presto核心,client连接coordinator,向coordinator提交执行所需的statements

Presto的部署中一定有一个coordinator,同时再附属一个或多个worker。如果是开发或者测试单个Presto实例可以同时以coordinator和worker两种角色服务

跟踪worker的状态,协调query的执行。

将query构建以stages为单元的逻辑执行模型,然后以tasks的形式分发到workers中执行

Worker

负责执行task,处理数据。Worker nodes从connectors中拉取数据,内部间交换exchange数据。coordinator从workers中拉取结果返回给client

Worker执行开始后,将自己注册到coordinator的discovery server中,discovery server告知coordinator该worker可用于执行task

Data Sources

Connector

实现 Presto’s SPI ,使得Presto可以用标准的API和数据源连接,类似于数据库的driver。内部有很多自建connectors

每个catalog和一个特定的connector关联,观察catalog configuration文件会发现都会有一个强制参数connector.name ,用于catalog manager为给定的catalog建立connector。多个catalog使用同一个connector连接相似数据集库的两个不同实体是允许的。例如:有两个hvie 集群,配置两个catalog,共同使用一个Hive connector,使我们可以从这两个hvie集群中查询数据。

Catalog

包含schemas,通过connector标识一个数据源。

在Presto中定位一张表,一般是catalog为根,例如:一张表的全称为 hive.test_data.test,标识 hive catalog下的 test_data schema中test表。可以简理解为:数据源的大类.数据库.数据表

Catalogs 在Presto配置文件目录下的properties files中定义

Schema

Schemas用于组织表(相当于数据库名),一个catalog和一个schema定义一组用于查询的tables

Table

数据表

Query Execution Model

Statement

SQL语句

Query

Presto 解析statement,将它转换为一个query,建立分布式的执行计划query plan ,然后query plan以一系列相互关联的运行于workers中的stages实现。query包含 stages, tasks, splits, connectors, 其他元素 、数据源等

Stage

query被分为层次结构的stages,一般是个tree,例如对billion rows聚合,一个root stage 对其他多个部署式查询的stage的结果进行聚合,stages树来描述一个分布式query,自身不在worker中执行

Task

如上所述,stage是分布式查询计划的模型组成成分,本身不在worker上执行。一个stage 是一系列分布在workers中的tasks的一个实现体,tasks是stage的组成元素,可以在work上并行执行。

Split

spits是一个大数据集的sections,tasks作用于splits。stage是分层继承的,其中执行计划中低层的stages,从connectors中通过splits获取数据,中间层的stages从其他stages中获取数据。

Driver

Tasks包含一个或多个并行的drivers,Drivers作用于数据,组合operators,来生产数据,产生的数据被task聚合,然后传递给下一个stage的另一个task,driver是operators实例的有序集合,可以看做是内存中operators物理集合,是Presto架构中最底层的并行层

Operator

operator 消费、传输、生产数据。例如:table scan通过connector从表中拉取数据,然后被其他operators消费,a filter operator对数据过滤

Exchange

Exchanges为不同stages在不同节点间传输数据,Tasks将产生的数据存在缓存中,利用exchange client从其他task中消费数据

[1]-Concepts

[1]-Concepts

架构图

[1]-Concepts

查询流程

[1]-Concepts