首页 > 其他分享 >dremio ProfileStore 简单说明

dremio ProfileStore 简单说明

时间:2024-03-03 09:02:33浏览次数:36  
标签:dremio java ProfileStore jobtelemetry server 简单 new

以前简单说明过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

标签:dremio,java,ProfileStore,jobtelemetry,server,简单,new
From: https://www.cnblogs.com/rongfengliang/p/18017774

相关文章

  • 简单封装 Flurl
    FlurlHttpClient类publicclassFlurlHttpClient{privatereadonlyFlurlClientclient;publicFlurlHttpClient(FlurlClientclient){this.client=client;client.WithHeader("hteder","hhhhh");//请求头}......
  • Ubuntu22.04简单美化
    Ubuntu美化环境Ubuntu版本:Ubuntu22.04.4LTSGnome版本:42.9开始更新镜像源sudoapt-getupdate安装工具安装应用程序:tweaks(优化),扩展程序sudoapt-getinstallgnome-tweakssudoapt-getinstallgnome-shell-extensions安装浏览器扩展gnome-shell-integration......
  • dremio jobprofile查询简单说明
    dremio提供了方便的jobprofile能力,可以进行共享以及分析dremio查询的性能问题,以下是关于jobprofile下载功能的简单说明下载处理SupportResource.java@POST@Path("download")@Consumes(MediaType.APPLICATION_JSON)publicResponsedownloadData(......
  • Dos的一些简单命令
    首先要知道如何打开CMD打开CMD的方式1.开始+系统+命令提示符2.Win键+R输入cmd打开控制台(推荐使用)3.在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器的地址栏前面加上cmd路径常用Dos命令#盘符查看D:#查看当前目录下的所有文件......
  • 简单dp 学习笔记
    1.背包1.1背包模型的概述有\(n\)种物品,每种物品有若干个。拿一件物品付出\(w_i\)代价获得\(v_i\)价值,问最多花费\(V\)的代价能获得的最大价值。1.20/1背包考虑每种物品只有一个的情况。我们设\(f_{i,j}\)表示前\(i\)个物品,花费了\(j\)的最大价值。于是得出......
  • 简单实现new关键字,及为什么当result为对象则返回这个对象?
    下面是一个简单的JavaScript代码示例,演示了如何手动实现new关键字的功能:functionmyNew(constructor,...args){//创建一个新对象,该对象继承自构造函数的原型varinstance=Object.create(constructor.prototype);//在新对象上调用构造函数,并传入参数var......
  • 14.分布式事件总线MassTransit的简单使用
    简介:    MassTransit,直译公共交通,是由ChrisPatterson开发的基于消息驱动的.NET分布式应用框架,其核心思想是借助消息来实现服务之间的松耦合异步通信,进而确保应用更高的可用性、可靠性和可扩展性。通过对消息模型的高度抽象,以及对主流的消息代理(包括RabbitMQ、Active......
  • 有哪些手机与电脑可以同步的简单好用笔记软件?
    在我的日常工作、学习和生活中,笔记软件是我不可或缺的助手。无论是会议要点的记录、学习笔记的整理、还是日常生活的备忘录,一款好用笔记软件都能让这些信息井然有序,随时可查。特别是在忙碌的工作日,能够在电脑上整理工作笔记,然后在外出时通过手机随时查看和补充,这种跨设备的便捷性......
  • 万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程
    万字长文学会对接AI模型:SemanticKernel和KernelMemory,工良出品,超简单的教程目录万字长文学会对接AI模型:SemanticKernel和KernelMemory,工良出品,超简单的教程配置环境部署one-api配置项目环境模型划分和应用场景聊天提示词引导AI回复指定AI回复特定格式模板化提示......
  • 简单几步,钉钉机器人秒变通义千问对话机器人
    简单几步,钉钉机器人秒变通义千问对话机器人    大模型不知不觉已经火了快一年了,拥有一个能够随时对话使用的大模型已经成为不少人的刚需。然而,最大的问题可能是如何访问和调用对话模型。如果,我是说如果,能在您的即时通讯软件钉钉中直接与通义千问对话,是不是会让这一切更方便快......