导读(老蒙):
Presto 是当下比较流行的即席查询引擎,相比另一个相似的引擎 Impala ,Presto 是 Java 开发的,拥有更好的社区资源(毕竟做大数据的都喜欢用 Java)。这篇文章比较基础,对 Presto 做了一个基本的讲解,包括各个进程的作用,编程模型,整体架构等等内容,是入门理解 Presto 的一篇好文章。
Presto是专为大数据实时查询计算而设计开发的产品,拥有如下特点:
多数据源:通过自定义Connector能支持Mysql,Hive,Kafka等多种数据源
支持SQL:完全支持ANSI SQL
扩展性:支持自定义开发Connector和UDF
混合计算:可以根据需要将开源于不同数据源的多个Catalog进行混合join计算
高性能:10倍于Hive的查询性能
流水线:基于Pipeline涉及,在数据处理过程当中不用等到所有数据都处理完成后再查看结果
1. 基本概念
1.1. 服务进程
Coordinator
主要作用:接受查询请求、解析查询语句、生成查询执行计划、任务调度、Worker管理
部署于服务器的一个单独节点上,是整个集群的Master节点
与Worker通信获得最新的状态信息,同时接受Client的查询请求
所有信息交互通过StatmentResource类提供的RESTful接口完成
Worker
工作节点,完成数据的处理和Task的执行
定时向Coordinator上报心跳
1.2. Presto模型
Connector
连接器,可以理解为Presto访问不同数据源的驱动程序;每个Connector都实现了Presto的标准SPI接口,因此只要自己实现SPI接口,就可以实现适合自己需求的Connector。Presto Con