一,Presto概念
Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。
二,Presto架构
Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。
Presto查询引擎是一个M-S的架构,由一个coordinator节点,一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌在Coordinator节点中。Coordinator负责SQL的解析,生成执行计划,分发给Worker节点进行执行,Worker节点负责实时查询执行任务。Worker节点启动后向discovery Server服务注册,Coordinator 从discovery server获取可以工作的Worker节点。如果配置了hive connector,需要配置hive MetaSote服务为Presto提供元信息,worker节点和HDFS进行交互数据。
三,特点
多数据源 ; 支持MySQL/PostgreSQL/Cassandra/Hive/Kafka等
支持sql ; 完全支持ANSI SQL,提供SQL Shell,也支持JDBC/ODBC
扩展性 : connector机制,很容易扩展开发自定义connector对接特定数据源
混合计算 ; 针对一种类型的connector配置一个或多个catalog,支持混合多个 catalog进行join查询计算
高性能 ; 充分利用内存,平均性能是Hive的10倍以上,秒级/毫秒级响应
流水线 ; Pipeline设计,数据像自来水管道一样,一旦开始计算,数据就立即产生 呈现到终端直到结束
四,presto适合干什么
适合:PB级海量数据复杂分析,交互式SQL查询,⽀持跨数据源查询
不适合:多个大表的join操作,因为presto是基于内存的,多张大表在内存里可能放不下\