dremio 系统内部存储插件与自定义存储插件加载的区别

dremio 整体包含了两大类存储扩展,系统内部使用的,以及用户开发的,

整体区别

  • 系统的目前是在dremio 自己启动的时候就会注册以及使用的,比如加速反射的,home,元数据存储插件
  • 用户自己开发的主要是通过web ui 或者api 初始化以及维护的
  • 用户以及系统存储配置的可配置性不一样,系统不能配置,类似静态,用户的可以配置,同时dremio api 以及web 管理也是通过是是否支持配置加载的

内部实际处理

  • 用户插件加载处理
public ResponseList<SourceTypeTemplate> getSourceTypes() {
  final ConnectionReader connectionReader = sabotContext.getConnectionReaderProvider().get();
  final ResponseList<SourceTypeTemplate> types = new ResponseList<>();
 
  final boolean showHive = sabotContext.getOptionManager().getOption(ALLOW_HIVE_SOURCE);
 
  for(Class<? extends ConnectionConf<?, ?>> input : connectionReader.getAllConnectionConfs().values()) {
    // we can't use isInternal as its not a static method, instead we only show listable sources,内部判断
    if (isListable(input)) {
      String sourceType = input.getAnnotation(SourceType.class).value();
      if (!showHive && "HIVE".equals(sourceType)) {
        continue;
      }
 
      if (sabotContext.getSourceVerifierProvider().get().isSourceSupported(sourceType)) {
        types.add(SourceTypeTemplate.fromSourceClass(input, false));
      }
    }
  }
 
  return types;
}

内部判断处理

private boolean isListable(Class<? extends ConnectionConf<?, ?>> clazz) {
  SourceType type = clazz.getAnnotation(SourceType.class);
  return type != null && type.configurable() && type.listable();
}
  • SourceType 注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface SourceType {
  String value();
  String label() default "";
  String uiConfig() default "";
  boolean configurable() default true;
  boolean listable() default true;
  boolean externalQuerySupported() default false;
  boolean previewEngineRequired() default false;
}
  • 系统插件加载处理
    以前说过,通过SystemStoragePluginInitializer 加载的,实际上是通过直接硬编码处理的

参考资料

dac/backend/src/main/java/com/dremio/dac/api/SourceResource.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/InternalFileConf.java
dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileConf.java
services/accelerator/src/main/java/com/dremio/service/reflection/materialization/AccelerationStoragePluginConfig.java

posted on 2023-01-06 21:06  荣锋亮  阅读(46)  评论(0编辑  收藏  举报

导航