presto学习总结(二)

  • Post author:
  • Post category:其他


Presto 是一个运行在多台服务器上的分布式系统。完整安装包括一个

Coordinator

和多 个

Worker

。由

客户端

提交查询,从 Presto 命令行 CLI 提交到 Coordinator。Coordinator 进行 解析,分析并执行查询计划,然后分发处理队列到 Worker


presto中的组件:


Presto查询引擎是一个Master-Slave的架构,由一个Coordinator节点,一个Discovery


Server节点,多个Worker节点组成,Discovery Server通常内嵌于Coordinator节点中。

Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。

Worker节点负责实际执行查询任务。Worker节点启动后向Discovery Server服务注册,

Coordinator从Discovery Server获得可以正常工作的Worker节点。如果配置了Hive

Connector,需要配置一个Hive MetaStore服务为Presto提供Hive元信息,Worker节点

与HDFS交互读取数据

(1)Coordinator:

负责接收来自用户的查询语句,解析这些语句,安排执行计划,并且管理worker节点.

Coordinator会跟踪每个worker的活动,并安排查询的执行,一旦接受到SQL查询,Coordinator就会负责parsing,analyzing,planning这个查询。

(2)Discovery Service

presto通过Discovery Service发现集群中的所有节点,worker启动的时候就会像Discovery Service注册,并且定时发送心跳信号

(3)worker

worker负责执行Coordinator分配给他的Tasks并且处理数据

sql的执行过程:


SQL以文本的形式被提交到Coordinator之后,Coordinator获取该文本并对其进行解析

和分析, 然后,它通过使用Presto中称为




Query Plan




的内部数据结构创建执行计划

执行流程:

(1)由客户端提交sql查询,通过presto cli提交到coordinator

(2)coordinator解析查询计划,然后把任务分发给worker

(3)worker来负责执行任务和处理数据

(4) 一个 Catalog 包含 Schema 和 Connector

Connector类似于JDBC,用于Presto和数据源的连接

Schema类似于MySQL中的数据库,Schema 是用于组织 table。把 catelog 和 schema 结合在一起来包含一组的表

Presto 处理 table 时,是通过表的

完全限定(fully-qualified)名

来找到 catalog。例如, 一个表的权限定名是

hive.test_presto.test

,则

test

是表名,

test_presto

是 schema,

hive

是 catalog,属于三层结构


每个Catalog配置使用一个Connector来访问一个特定的数据源,

Presto的Catalog相当于我们经常说的mysql实例

这个Catalog的数据源会对外暴露一个或多个Schema

每一个Schema包含一些Table,这些表以Row的方式提供数据,每一个Row中包含

多个不同数据类型的Column。


Connector-based架构


Presto的存储与计算分离的核心在于Connector为基础的架构。Connector为Presto 提供了一个可以访问任意数据源的接口

Presto中的执行计划使

用Metadata SPI用于获取关于表、列和类型的信息,Data Statistics SPI用于获取关于行数和表大小的信息,以便在计划期间执行基于成本(cost-based)的查询优化, Data Location SPI来收集关于数据源的表等元数据信息,它可以生成关于表内容的逻辑Splits。Splits是工作分配和并行化的最小单位。

也可参考官方网站进行学习,

https://prestodb.io/



https://trino.io/


Presto优点


特点



说明


多数据源

支持MySQL/PostgreSQL/Cassandra/Hive/Kafka等
支持sql

完全支持ANSI SQL,提供SQL Shell,也支持JDBC/ODBC
扩展性

connector机制,很容易扩展开发自定义connector对接特定数据源
混合计算

针对一种类型的connector配置一个或多个catalog,支持混合多个 catalog进行join查询计算
高性能

充分利用内存,平均性能是Hive的10倍以上,秒级/毫秒级响应
流水线

Pipeline设计,数据像自来水管道一样,一旦开始计算,数据就立即产生 呈现到终端直到结束

Presto的安装本人是通过dorker的方式进行测试的,主要是体验实践一下,大体的sql基本与MySQL或者hive类似。

dorker和presto的安装

部分图片来自于自己买的极客时间的大数据训练营的老师PPT上的图片

欢迎大家提出问题,一起学习进步。



版权声明:本文为qq_34558830原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。