• 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

  • 相关阅读:
    Baskets of Gold Coins_暴力
    Inversion_树状数组***
    萌新的旅行-
    KI的斐波那契_DFS
    牛吃草_二分法
    See you~_树状数组
    Bellovin_树状数组
    Bubble Sort_树状数组
    [Python] numpy.ndarray.shape
    [Python] numpy.sum
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/15957875.html
Copyright © 2020-2023  润新知