presto学习总结(二)

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上的图片

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值