Presto 是一种分布式 SQL 查询引擎,旨在查询分布在一个或多个异构数据源上的大型数据集。例如,查询 TB 或者 PB 级别的数据,是查询 HDFS、Hive 的一个可选项,但同时不局限于 HDFS, Presto 适用于 OLAP 场景。Presto 并不能用来替代 mysql/pg/oracle,presto 设计的目的也不是用来处理 OLTP 场景。

Presto 架构角色

Presto 架构角色

Presto 节点角色


Presto 架构角色关系

Presto 架构角色关系

在设计上,Discovery 和 Coordinator 都是单节点。如果有多个 Coordinator 同时存活,Worker 会随机的向其中一个汇报进程和 Task 状态,导致脑裂。调度 query 时有可能会发生死锁。

所以一般 HA 会部署多个 Presto 集群,通过 LB 做多个 Coordinator 的负载均衡。

Presto 数据模型


三层表结构