Presto--dws层
1.概述
分布式SQL查询引擎。Presto旨在处理数据仓库和分析:数据分析、聚合大量数据和生成报告。这些工作负载通常被分类为联机分析处理(OLAP)
2.系统架构
presto集群是master worker架构,有如下几个组件:
1.Coordinator:
用来解析语句,执行计划分析和管理 Presto 的 Worker 节点。Presto 安装必须有一个 Coordinator 和多个 Worker。如果用于开发环境和测试,则一个 Presto 实例 可以同时担任这两个角色。
Coordinator 跟踪每个 Work 的活动情况并协调查询语句的执行。Coordinator 为每个查询建立模型,模型包含多个Stage,每个Stage再转为Task 分发到不同的 Worker 上执行。
-
Discovery server:只能有一个,负责维护coordinator和worker节点关系,worker节点启动后向discovery service服务注册,coordinator通过discovery service获取注册的worker节点以及catalog,通常内嵌于coordinator节点中。
-
Worker:负责执行任务和处理数据。Worker 从 Connector 获取数据。Worker 之间会交换中间数据。Coordinator 是负责从Worker 获取结果并返回最终结果给 Client。当 Worker 启动时,会广播自己去发现 Coordinator,并告知 Coordinator 它是可用,随时 可以接受 Task。
-
Catalog:一个 Catelog 包含 Schema 和 Connector,对应了某一类的数据源
-
Connector:适配器,用于 Presto 和数据源(如 Hive、RDBMS)的连接,每个 Catalog 都有一个特定的 Connector
-
Schema:用于组织 table。把 catelog 和 schema 结合在一起来包含一组的表,Schema对应了某一类数据源的数据库
-
Table: 跟关系型的表定义一样,但数据和表的映射是交给 Connector。
3.SQL执行流程
-
解析器:coordinator接收到SQL之后,通过解析器将SQL转换成抽象语法树AST
-
逻辑计划器:SQL语法正确,会通过connector将meta表中的schema、列名、列的数据类型进行对比是否与SQL中一致,对性能进行优化,生成逻辑执行计划,
-
分发计划器:将逻辑执行计划进行分布式解析分发到执行器中
-
执行器:将逻辑执行计划转换成物理执行计划分发到对应的worker中去执行
4.MapReduce vs Presto