dremio maestro 服务简单介绍
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 的查询流程学习,可以加速低于机制的了解
参考资料
sabot/kernel/src/main/java/com/dremio/exec/maestro
services/maestro/client/src/main/java/com/dremio/service/maestroservice
https://drill.apache.org/docs/drill-query-execution/