Presto
Presto是基于大数据的分布式SQL查询引擎
Presto是开源的、基于大数据的交互式查询引擎。它设计的目的就是用来提高海量数据查询的速度。
Presto是运行在集群中的一个分布式系统,它可以分析海量数据。使用Presto,可以通过SQL接入和查询不同源头的数据。
Presto的整体架构包含一个coordinator和多个workers。通过客户端提交query给coordinator(比如Presto CLI)。coordinator负责解析分析成执行计划,然后将这些可执行计划部署到worker中。
Presto支持插件式connector,然后基于提供的数据做查询。不同connector的要求不同,比如可以支持:Hive,MySQL,Elasticsearch,Cassandra,kafka和其他。
应用场景
- 交互式分析
- 批量ETL
- A/B测试
- 应用分析
组件介绍
Presto集群中服务器有两种类型:coordinator和worker
Coordinator
Presto中的coordinator负责解析话术,生成计划,并且管理worker节点,它是Presto的“大脑”,并且也是集群中的一个可连接的节点。一个Presot集群中需要有一个coordinator和一个或多个worker,如果用于测试的话,可以将一个实例赋予两个角色。
Presto通过REST API与worker和client进行连接通信。
Worker
worker负责执行任务和处理数据,worker从connector获取数据并互相之间进行数据交换。coordinator负责从worker获取结果数据并返回给client。
当worker启动后会注册到coordinator中,然后coordinator可以给该worker分配任务。