presto中的一些概念
一.Presto中的节点类型
presto中含有两种节点类型:coordinator和worker。
1.Coordinator
coordinator的主要职责是语法解析,构建查询计划,以及管理worker节点。它相当于presto的大脑,客户端会连接到coordinator并提交执行语句。安装presto需要一个coordinator以及一个或多个workers。
coordinator跟踪每个worker的活动情况,并协调一个查询的执行。coordinator为每个查询创建逻辑模型,其中包含一系列的stage,这些stage会被转换为一系列的task,去worker的集群上执行。
coordinator与worker、客户端间的连接使用REST API的方式。
2.Worker
worker在presto中的职责是执行task并处理数据。worker节点从connector拉取数据,并在节点间进行中间数据的交换。coordinator负责从workers拉取结果并返回给客户端。
worker节点启动时,会向coordinator广播自己。
二.数据源
1.Connector
connector使得Presto可以连接到Hive或关系数据库等数据源。可以把connector想象为一个数据库的driver。connector是Presto SPI的实现,SPI使得Presto可以使用标准API与数据源进行交互。
每个catalog绑定于特定的connector。catalog的配置文件中有一个强制的属性:connector.name,这用于catalog manager根据给定的catalog创建一个connector。
2.Catalog
catalog包含通过connector连接到数据源的schema。比如表名等等...
catalog由配置文件定义,并存储在Presto的配置目录中。
3.Schema
Schema是组织表的一种方式。catalog和schema一起定义可以查询到的一系列表。
4.Table
table是由命名列以及类型组织的一系列数据行,这跟关系型数据库类似。数据源到table的映射由connector来定义。
三.Query Execution Model
1.Statement
Presto执行ANSI兼容的SQL语句。
2.Query
Presto解析语句后,会将其转为一个query,并且创建分布式的执行计划,然后将其实现为一系列内部相连的stages,放到workers上去运行。
3.Stage
当Presto执行一个查询时,它会将其打碎,构造一系列stages的层级关系。
Stages的层级关系类似于一颗树,每个query都有一个root stage,其作用是将其他stages的结果聚集起来。stages本身不运行在Presto的workers上。
4.Task
stage由分布在Presto workers的一系列task构成。一个task包含inputs和outputs,task由一系列drivers并行执行。
5.Split
task作用于一个大数据集的一部分(称为split)上。stages通过splits从connector检索数据。
6.Driver
task包含一个或多个并行drivers。drivers是操作符的序列。在Presto的架构中,它是并行执行的最低级别。driver有一个输入和一个输出。
7.Operator
operator消费、转换并产生数据。