dremio SourceMetadataManager 服务简单说明

SourceMetadataManager 对于dremio 来说是一个比较重要的东西,它是包含在ManagedStoragePlugin中的一个能力
所以每个存储扩展都包含了一个SourceMetadataManager,而且ManagedStoragePlugin 会利用SourceMetadataManager
的能力管理系统元数据

SourceMetadataManager 的职责

主要是进行source 元数据的同步,主要包含了即席查询,以及后台刷新,即席查询的主要是在添加source 以及测试场景,后台
是基于任务调度执行的,同时还包含了对于元数据的存储(kvstorage)

类图

 

 

说明:SourceMetadataManager包含了两大类即席刷新以及,后台任务刷新,从上图也可以看出来

即席查询元数据处理

从上图也可以看出依赖关系,实际上就是一个实现RefreshRunner的子类,包含了几个数据刷新,以及存储元数据的方法
注意依赖了一个MetadataBridge 设计比较有意思(实现了一个锁,确保ManagedStoragePlugin与元数据管理的安全)
refreshDatasetNames 的实现就类用了每个存储扩展包的元数据接口定义了,如果实现了SupportsListingDatasets 就可以获取列表了
具体是如下一个接口的实现

 
public interface SupportsListingDatasets {
 
  /**
   * Returns a listing of dataset handles, where each handle represents a dataset in the source.
   *
   * @param options options
   * @return listing of dataset handles, not null
   */
  DatasetHandleListing listDatasetHandles(GetDatasetOption... options)
      throws ConnectorException;
 
}

其他函数功能参考详细参考源码,同时后台任务的处理与类似,只是是基于任务调度执行的

一个参考sql 执行调用链

  • schema 获取的

 

 

说明

以上关于SourceMetadataManager只是简单的介绍,同时比较零碎,后期提供应该会结合组件将功能串起来

参考资料

sabot/kernel/src/main/java/com/dremio/exec/catalog/SourceMetadataManager.java

posted on 2022-03-08 00:12  荣锋亮  阅读(56)  评论(0编辑  收藏  举报

导航