maestro 英文翻译是大师,dremio 中的 maestro 主要进行服务的执行(提供一个执行抽象,实际具体执行是由command pool 操作的
dremio 也还包含了一个独立的maestro 的rpc 定义(基于fabric 进行通信,主要包含了rpc 类型以及client方便kernel 集成使用,同时在kernel 的service包中包含了一个maestro的实现
服务接口定义
包含了不少操作,比如取消查询,执行查询,获取活跃的查询id,获取分组资源信息,获取查询的总数
对于默认实现的查询部分依赖了dremio 的command pool (后边会介绍)
maestro 查询部分使用了ControlsInjector (dremio 的异常注入控制)以及QueryTracker (dremio 查询追踪的)
服务包含的其他能力
-
- MaestroForwarder
核心是将请求转发到maestro服务(从目前目前来说实际上是到协调节点)
参考类图
使用到此服务的模块
AttemptManager、ForemenWorkManager、Foreman 、ActiveQueryListService 从内部机制上来说这个是比较重要的,很多执行处理都是需要依赖这个的
说明
对于以上代码可以结合drill 的查询流程学习,可以加速低于机制的了解
services/maestro/client/src/main/java/com/dremio/service/maestroservice