Advertisement

Presto进行查询调度分析

阅读量:

文章结构概述

  • 提交查询请求
    • 制定查询执行方案并激活调度机制
    • 查询的调度流程
    • Stage调度策略
      • 构建Stage调度器
      • 源数据Stage的调度方式
      • 具备可扩展性的分布式写入Stage调度机制
      • 输入皆为远程数据源的Fixed/Single Stage调度方式
      • 输入包含本地数据源的Fixed Stage调度方式

Presto将接收到的查询请求拆解为多个具有树状结构层级关系的Stage,这实际上意味着将整个SQL处理流程划分为若干个具备特定功能的执行阶段。在完成对查询请求的解析并生成各个执行阶段之后,系统会将这些阶段分配至不同的计算节点进行处理,该分配过程是基于Stage展开的,并且不同类型的Stage采用各自的调度策略。每一个执行阶段还会被进一步细分为多个Task,查询调度的核心任务即是将这些Task分配至Worker节点上,通过并发协作的方式共同完成整个查询任务。

提交查询

首先简要了解从用户提交查询到实际执行的完整流程。Presto通过Rest接口QueuedStatementResource.postStatement接收查询请求,该接口仅将查询任务添加至一个映射队列`Map<QueryId, Query> queries = new ConcurrentH

全部评论 (0)

还没有任何评论哟~