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   荣锋亮  阅读(46)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-01-06 oceanbase timeout 问题
2022-01-06 juicefs csi 集成试用
2021-01-06 grafana tempo 分布式追踪框架学习试用
2021-01-06 synthetic-load-generator 一个不错的opentracing trace && metrics && logs 生成工具
2021-01-06 记一次php.ini配置不合理造成系统加载偏慢问题
2019-01-06 使用nexus 管理pip 私有包
2018-01-06 让nodejs 支持 es6 import

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示