[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中消费数据
架构图
查询流程