以前在关于ManagedStoragePlugin部分,简单说明了下SystemStoragePluginInitializer,今天再明确说明下
SystemStoragePluginInitializer 的特点
- 继承自Initializer接口,可以实现一些轻量级服务的启动
- SystemStoragePluginInitializer 的启动是通过InitializerRegistry 类实现的,InitializerRegistry 实现了service 接口,dremio启动的时候会自动启动(start 方法)
- InitializerRegistry 服务只能在协调节点运行,对于实现了Initializer接口的服务是通过动态类加载的机制创建并启动的
- SystemStoragePluginInitializer 服务会进行集群角色的判断,比如是否运行在包含master 选举模式中,同时会加载不同的服务,包含了taskLeaderElection服务以及创建一些内部存储插件(pluginsCreation 方法处理的)
- SystemStoragePluginInitializer 加载的存储插件比较多,包含了home,Acceleration,jobresult,sractch,download,metadata,gandiva,log,support
几个存储插件的创建
上边简单说了功能,以下简单说明下几个存储插件的加载,上边加载创建了不少存储插件,实际可以分为5大类,home,Acceleration,internal,meadata
- HomeFileConf
核心是当前用户相关的,我以前简单介绍过可以查看 - Acceleration
是关于dremio 反射相关的,我以前也简单介绍过可以查看 - internal
此类实际上与反射以及home 是类似的设计 - meadata
此类实际上与反射以及home 是类似的设计 - gandiva
此类实际上与反射以及home 是类似的设计
备注: 以上存储插件都有一些特点,基于分布式存储实现,同时都实现了一个方法create,方便创建source
说明
实际上dremio SystemStoragePluginInitializer 初始化的一些存储插件是类似的,同时dremio 新版本中我们看到的基本也是一致的,而且基本都存储在分布式存储中了,可以说就是一个统一的存储插件,以上是一个简单说明,方便大家对于dremio对于分布式存储中存储的数据有一个了解
参考资料
dac/backend/src/main/java/com/dremio/dac/daemon/SystemStoragePluginInitializer.java
dac/backend/src/main/java/com/dremio/dac/daemon/DACDaemonModule.java
dac/backend/src/main/java/com/dremio/dac/homefiles/HomeFileConf.java
common/legacy/src/main/java/com/dremio/service/InitializerRegistry.java
com/dremio/service/reflection/materialization/AccelerationStoragePluginConfig.java
sabot/kernel/src/main/java/com/dremio/exec/store/dfs/InternalFileConf.java
https://www.cnblogs.com/rongfengliang/p/17027256.html
https://www.cnblogs.com/rongfengliang/p/16801083.html
https://www.cnblogs.com/rongfengliang/p/17020668.html