首页 > 其他分享 >dremio provision 模式功能简单说明

dremio provision 模式功能简单说明

时间:2023-01-31 23:02:08浏览次数:240  
标签:src dremio java com 模式 main provision

目前此功能主要是支持yarn 等资源调度的,在dremio 系统中名称为弹性引擎

ProvisioningService 服务接口定义

参考类图

 

 

不同类型的实现

具体操作是由ProvisioningServiceDelegate定义进行操作的,并在dremio 启动的时候会包含相关服务能力的创建,因为ProvisioningService 服务实现了标准service
接口
服务初始化

 
 public ProvisioningServiceImpl(
    final DremioConfig dremioConfig,
    final Provider<LegacyKVStoreProvider> kvStoreProvider,
    final NodeProvider executionNodeProvider,
    ScanResult scanResult,
    Provider<OptionManager> optionProvider,
    Provider<EditionProvider> editionProvider) {
    this.kvStoreProvider = Preconditions.checkNotNull(kvStoreProvider, "store provider is required");
   // 初始化ProvisioningServiceDelegate 实现列表(基于类型,基于类扫描机制)
    this.delegateProvider = () -> buildConcreteServices(
      scanResult,
      dremioConfig,
      executionNodeProvider,
      optionProvider,
      editionProvider,
      this
    );
  }

查找到的实现类型

 private static Map<ClusterType, ProvisioningServiceDelegate> buildConcreteServices(
    ScanResult scanResult,
    DremioConfig dremioConfig,
    NodeProvider executionNodeProvider,
    Provider<OptionManager> optionProvider,
    Provider<EditionProvider> editionProvider,
    ProvisioningServiceImpl provisioningServiceImpl){
    Set<Class<? extends ProvisioningServiceDelegate>> serviceClasses =
      scanResult.getImplementations(ProvisioningServiceDelegate.class);
    Map<ClusterType, ProvisioningServiceDelegate> concreteServices = new HashMap<>();
    for (Class<? extends ProvisioningServiceDelegate> provisioningServiceClass : serviceClasses) {
      try {
        Constructor<? extends ProvisioningServiceDelegate> ctor =
          provisioningServiceClass.getConstructor(DremioConfig.class, ProvisioningStateListener.class, NodeProvider.class, OptionManager.class,
            EditionProvider.class);
        ProvisioningServiceDelegate provisioningService =
          ctor.newInstance(dremioConfig, provisioningServiceImpl, executionNodeProvider, optionProvider.get(),
          editionProvider.get());
 
        concreteServices.put(provisioningService.getType(), provisioningService);
      } catch (ReflectiveOperationException e) {
        logger.error("Unable to create instance of {} class", provisioningServiceClass.getName(), e);
      }
    }
    return Collections.unmodifiableMap(concreteServices);
  }
   

ProvisioningServiceDelegate 类图能力

社区版的实现

默认操作图如下(可以看到包含的是yarn )

 

 


实际支持的类型

 

 

provision 模块提供的能力

参考类图,可以看到包含了一个默认的实现(yarn 类型的),里边包含了集群创建,集群启动,集群停止,集群信息同步,集群配置更新(具体在yarn 模块中)
我以前简单说过是基于了apache twill 进行的资源控制开发的(后边详细说明下开发流程)

 

 

provision 服务的使用

包含了DACDaemonModule 对于ProvisioningService 的注册(到dremio 的ioc 管理中),ui 中的web api ProvisioningResource 主要是进行yarn 资源的
创建包含了状态查看,配置修改(会同时更新yarn 资源可能需要重启),所有集群信息查看,以及删除yarn 集群资源,对于内部yarn 的创建管理以及注册
我后边详细介绍

参考资料

provision/common/src/main/java/com/dremio/provision/service/ProvisioningServiceDelegate.java
provision/common/src/main/java/com/dremio/provision/service/ProvisioningServiceImpl.java
services/resourcescheduler/src/main/java/com/dremio/resource/RuleBasedEngineSelector.java
services/resourcescheduler/src/main/java/com/dremio/resource/GroupResourceInformation.java
sabot/kernel/src/main/java/com/dremio/exec/ops/QueryContext.java
services/resourcescheduler/src/main/java/com/dremio/resource/ClusterResourceInformation.java
services/resourcescheduler/src/main/java/com/dremio/resource/SelectedExecutorsResourceInformation.java
sabot/kernel/src/main/java/com/dremio/exec/planner/fragment/SimpleParallelizer.java
dac/daemon/src/main/java/com/dremio/dac/daemon/YarnDaemon.java
provision/common/src/main/java/com/dremio/provision/resource/ProvisioningResource.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemonModule.java
https://docs.dremio.com/software/deployment/yarn-deployment/
https://docs.dremio.com/software/advanced-administration/workload-management/

标签:src,dremio,java,com,模式,main,provision
From: https://www.cnblogs.com/rongfengliang/p/17081114.html

相关文章

  • 设计模式 > 单一职责原则
    SOLID原则并非单纯的1个原则,而是由5个设计原则组成的,它们分别是单一职责原则,开闭原则,里氏替换原则,接口隔离原则和依赖反转原则。单一职责原则(SRP)定义:一个类或者模块只负......
  • 工厂模式(factory)
    1,简单工厂模式1.1,简介简单工厂:封装创建产品的过程。提供一个返回产品实例的方法,此方法封装了产品实例的逻辑,根据参数返回不同的实例。所有产品一个工厂实例生成。缺点:每......
  • 代理模式(Proxy)
    1,代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代......
  • dremio provisioning 几种模式简单介绍
    主要是包含了基于云以及yarn模式的部署awseks  azurearm  azureaks  yarn模式  标准集群模式  说明以上集中模式包含了软件以及在云......
  • RabbitMQ基本原理及模式介绍
    一、RabbitMQ概念RabbitMQ:是一个由erlang开发的AMQP(AdvancedMessageQueue高级消息队列协议)的开源实现,由于erlang语言的高并发特性,性能较好,本质是个队列,FIFO先入先......
  • 通过自定义注解和反射实现策略模式
    通过自定义注解和反射实现策略模式​ 今天在写一个工单系统时,工单审批通过后,需要根据不同的工单类型选择不同的处理方式非常适合用自定义注解+反射来实现,研究了一番,......
  • Web应用模式 Api接口 Api接口调试工具postman及使用
    目录web应用模式前后端混合开发前后端分离开发API接口接口调试工具postmanpostman的使用web应用模式前后端混合开发djangoweb框架专门用来写web项目#之前学的,写的bbs......
  • 0161-GDB 调试实模式
    环境Time2022-11-08WSL-Ubuntu22.04QEMU6.2.0NASM2.15.05前言说明参考:《x86汇编语言:从实模式到保护模式》李忠参考:https://astralvx.com/debugging-16-bit-......
  • vue 不同路由模式,部署时,nginx的不同配置
    hash模式路由配置如下:location/{rootfont;indexindex.htmlindex.htm;}history模式路由配置如下:location/{rootfont;index......
  • Vulnhub之Cheran EE靶机详细测试过程(需要特别注意靶机的网络模式)
    CheranEE靶机信息名称:Cheran:1地址:https://www.vulnhub.com/entry/cheran-1,521/识别目标主机IP地址(kali㉿kali)-[~/Vulnhub/Cheran]└─$sudonetdiscover-i......