文章目录
基础架构
Presto是Facebook开源的MPP架构的OLAP查询引擎,可对从数G到数P的大数据进行交互式的查询,查询性能是Hive的10倍以上。Presto查询引擎是一个Master-Slave的架构,其架构图如下:
由架构图可以看出,Presto集群中主要有两大服务:Coordinator服务和Worker服务。
Coordinator服务
Coordinator服务是整个Presto集群的Master,其主要作用是:接收查询请求、解析查询语句、生成查询执行计划、任务调度和Worker管理。其既与Worker进行通信从而获得最新的Worker信息,又与Client进行通信,从而接受查询请求。
Worker服务
Worker服务是工作节点,执行被分解后的查询执行任务:Task。Worker服务每隔一定的时间都会向Coordinator服务发送心跳,从而告知Coordinator:我还活着,并接受你的调度。
当客户端提交一个查询的时候,Coordinator则会从当前存活的Worker列表中选择出合适的Worker节点去运行Task。而Worker在执行每个Task的时候又会进一步对当前Task读入的每个Spit进行一系列的操作和处理。
Presto模型
Presto模型如下图所示:可通过connector连接一个数据源,可以根据一个connector配置多个catalog,一个catalog可以有多个schema,一个schema可以有多个table。