dremio ProfileStore 简单说明

以前简单说明过dremio 的jobprofile query,现在简单说明下dremio ProfileStore

参考实现

如下图,实际上只有一个LocalProfileStore,数据是存储咱爱kv storage 中的,但是对于kv 存储的只有完成的profile,其他阶段的数据是直接存储在
内存中的

使用

目前ProfileStore的实现只有LocalProfileStore,对于初始化是在LocalJobTelemetryServer 中,同时也会进行JobTelemetryServiceImpl 服务创建
(一个进程内rpc 的启动)

  • LocalJobTelemetryServer 创建
  public void start() throws Exception {
    profileStore = new LocalProfileStore(kvStoreProvider.get());
    profileStore.start();
 
    metricsStore = new LocalMetricsStore();
    metricsStore.start();
 
    server = JobTelemetryRpcUtils.newInProcessServerBuilder(grpcFactory,
      selfEndpoint.get().getFabricPort())
      .maxInboundMetadataSize(81920) // GrpcUtil.DEFAULT_MAX_HEADER_LIST_SIZE * 10
      .intercept(TransmitStatusRuntimeExceptionInterceptor.instance())
       // 会传递profileStore 到 JobTelemetryServiceImpl ,我们的jobprofile 查询会使用到
      .addService(new JobTelemetryServiceImpl(metricsStore, profileStore, tracer, true, executorService))
      .build();
 
    server.start();
    logger.info("LocalJobTelemetryServer is up");
  }

同时此服务只能在协调节点同时配置了job 开启(默认就开启,通过配置继承处理的)
DACDaemonModule 中

    if (isCoordinator && config.getBoolean(DremioConfig.JOBS_ENABLED_BOOL)) {
      registry.bindSelf(new LocalJobTelemetryServer(
        registry.lookup(GrpcServerBuilderFactory.class),
        registry.provider(LegacyKVStoreProvider.class),
        currentEndPoint,
        bootstrapRegistry.lookup(GrpcTracerFacade.class),
        new ContextMigratingExecutorService(new ThreadPoolExecutor(12, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>())))
      );
 
      registry.bindSelf(new LocalJobCountsServer(
        registry.lookup(GrpcServerBuilderFactory.class),
        registry.provider(KVStoreProvider.class),
        currentEndPoint)
      );
    }
  • JobTelemetryServiceImpl 以及BackgroundProfileWriter 的使用
    JobTelemetryServiceImpl 会进行ProfileStore 的实际操作,包含了添加,删除,查询,更新,BackgroundProfileWriter 主要是写入
    profile到ProfileStore 中
  • ProfilesExportery以及ExportProfilesResource的使用
    这个主要是cli 以及rest api 的提供,方便进行profile 的导出

说明

以上是一个简单ProfileStore的说明,后边会结合JobTelemetryServiceImpl的写入操作进行详细的说明

参考资料

services/jobtelemetry/server/src/main/java/com/dremio/service/jobtelemetry/server/store/ProfileStore.java
services/jobtelemetry/server/src/main/java/com/dremio/service/jobtelemetry/server/store/LocalProfileStore.java
services/jobtelemetry/server/src/main/java/com/dremio/service/jobtelemetry/server/BackgroundProfileWriter.java
services/jobtelemetry/server/src/main/java/com/dremio/service/jobtelemetry/server/JobTelemetryServiceImpl.java
services/jobtelemetry/server/src/main/java/com/dremio/service/jobtelemetry/server/LocalJobTelemetryServer.java
dac/backend/src/main/java/com/dremio/dac/server/admin/profile/ProfilesExporter.java
dac/backend/src/main/java/com/dremio/dac/resource/ExportProfilesResource.java

posted on   荣锋亮  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-03-03 dremio jdbc arp 扩展包装以及加载处理
2022-03-03 dremio 社区版JdbcStoragePlugin 简单说明
2022-03-03 dremio 社区版本scheduler 任务池加载处理机制简单说明
2021-03-03 dremio 14 版本发布&&新的官方文档页面
2020-03-03 pgmetrics 一个灵活方便的pg 监控cli
2020-03-03 Kuma 0.4 发布支持7层链路追踪以及grafana dashboard
2020-03-03 yugabyte 2.1.0. 发布

导航

< 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
点击右上角即可分享
微信分享提示