dremio 社区版本scheduler 任务池加载处理机制简单说明
dremio 当前发行版本包含了已给社区版本的调度,此包的加载还是比较有意思的
参考处理机制
TaskPoolInitializer start 中会进行taskpool 的创建
@Override
public void start() throws Exception {
final TaskPoolFactory factory = TaskPools.newFactory(dremioConfig.getSabotConfig());
pool = factory.newInstance(optionManager.get(), dremioConfig);
}
TaskPools 参考处理
public final class TaskPools {
public static final String DREMIO_TASK_POOL_FACTORY_CLASS = "dremio.task.pool.factory.class";
private TaskPools() {}
public static TaskPoolFactory newFactory(SabotConfig config) {
final TaskPoolFactory factory;
// 此配置是核心,包含了会加载ce 版本的不然就是默认的
if (config.hasPath(TaskPools.DREMIO_TASK_POOL_FACTORY_CLASS)) {
factory = config.getInstanceOf(TaskPools.DREMIO_TASK_POOL_FACTORY_CLASS, TaskPoolFactory.class);
} else {
factory = new DedicatedTaskPool.Factory();
}
return factory;
}
}
dremio-ce-sabot-scheduler 的配置
sabot-module.conf
dremio: {
// Adding slicing task pool options
classpath.scanning: {
packages += "com.dremio.sabot.task.slicing.SlicingTaskPool"
}
// Changing default task pool factory, 因为此配置,就会加载ce 的任务调度处理机制了
task.pool.factory.class = "com.dremio.sabot.task.slicing.SlicingTaskPool$Factory"
}
说明
ce 版本的scheduler设计还是很强大的,后变会介绍下设计,其中依赖了一个很不错的线程库锁包openhft.affinity 值得学习下
参考资料
sabot/kernel/src/main/java/com/dremio/sabot/task/TaskPools.java
sabot/kernel/src/main/java/com/dremio/sabot/exec/TaskPoolInitializer.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2021-03-03 dremio 14 版本发布&&新的官方文档页面
2020-03-03 pgmetrics 一个灵活方便的pg 监控cli
2020-03-03 Kuma 0.4 发布支持7层链路追踪以及grafana dashboard
2020-03-03 yugabyte 2.1.0. 发布
2019-03-03 Announcing HashiCorp Consul + Kubernetes
2019-03-03 katalog-sync: Reliable Integration of Consul and Kubernetes