首页 > 其他分享 >Trino418版本动态加载catalog不需要重启集群修改思路及实现

Trino418版本动态加载catalog不需要重启集群修改思路及实现

时间:2023-08-16 18:35:30浏览次数:47  
标签:实现 Worker Trino418 Coordinator catalog 推送 加载

      熟悉Trino 的同学应该都知道Trino新增、删除 catalog 都需要重启集群,这个生产环境里如果需要频繁增加数据源的场景是非常不友好的操作。     网上关于动态加载Catalog的方案有一些,但是在Trino比较新的版本里面已经无法适用。 目前官方关于这个功能一直都没有完成,详细issue  Dynamic Catalogs #12709。 详细阅读了这个issue里面的讨论,有2个推送虽然没有被官方确认合并,但这2个推送给我了改造思路,目前推送的都是半成品,所以想要完整的实现还需要自己修改源代码实现一部分功能。        相关推送:JDBC  RESTFUL API

改造思路:

    1.catalog 统一维护存储 如 Database、Zoopkeeper、中间件 等。     2.增加Restful API 接口来统一管理 管理 catalog目录     3.集群重启、node节点单独重启,能加载到最新catalog目录。

 

具体实现:

   1.选择数据库来实现,方便跟公司程序集成。          2.按照2个github的推送,实现Database 跟 Restful 接口开发。(这部分不赘述,照着推送的代码实现就行,重点是后面的修改思路)    3.第1步完成后,会发现遇到的问题

                  ①启动后只有Coordinator节点能够正常的加载catalog目录,node节点启动的时候无法加载catalog目录。

   这部分是因为 官方的DynamicCatalogManagerModule 功能并不完整,只实现了Coordinator的部分的功能,下面的Worker的加载功能并没有实现,这部分需要新增Worker加载Catalog目录功能、以及实现CatalogManager接口。

                  ②Restful Api接口来新增catalog时候,Worker节点没有成功加载catalog            这个是我实现过程中花了时间最长,但是又最不需要修改的地方。网上有方案修改 DiscoveryNodeManager在检测心跳的时候去新增这个Catalog,但是我测试了下在比较新的Trino版本并没有作用。            另外的做定时刷新,这个可能是有用,但是并不符合我的想法,我想只有在新增的catalog时API接口触发下就行,而且立马就可以用,不需要等刷新时间。                                  实现方案:其实ServerMainModule里注入了RestfulAPI后,就相当于Coordinator 跟 Worker 都实现了这些API,并不是只有Coordinator才有这些功能,所以这一步只要通过/v1/node 获取到所有的node节点,        通过对应的地址去注册Catalog就行,根本就不需要去做多余的额外实现。(为了这个不需要修改的功能搞了2个星期,最后发现不需要改也能实现,崩溃。。。。。)

实践效果:

         1.获取node节点

        2.新增catalog

                   Coordinator:

         Worker:

        不需要重启查询:

       删除某个catalog:

 

到这里基本就完成了不重启自动加载Catalog目录的功能,但是仍然有一点小问题,经过测试同样名称的catalog新增后删除后,再新增仍然使用同样的名称跟连接器,会导致跟前面加载进去的同名连接器冲突,但是这个可以让程序上就源头上规避掉,使用过的catalog名称就不然再使用。在数据库里面把名称设为主键,删除catalog只修改状态不删除记录。

 

目前这个是我实现的方案,如果有更好的想法老铁欢迎留言一起交流,关于Coordinator同步了能自动同步到Worker节点的功能,网上关于这个修改的资料比较少。

标签:实现,Worker,Trino418,Coordinator,catalog,推送,加载
From: https://www.cnblogs.com/liuzx8888/p/17635913.html

相关文章

  • 深入理解 Flutter 图片加载原理
    前言随着Flutter稳定版本逐步迭代更新,京东APP内部的Flutter业务也日益增多,Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验,但随之也带来了一些OOM问题,通过线上监控信息和Observatory工具结合分析我们发现问题的原因是由于Fl......
  • Java--类加载器
    Java类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,负责将Java类从.class文件加载到内存中并进行链接、初始化等操作,使得Java程序能够运行。类加载器的种类及作用BootstrapClassLoader启动类加载器,是JVM的一部分,用来加载Java核心类库,例如rt.jar等.ExtensionClassLoad......
  • teamcenter 无法加载或刷新对象。请参考错误堆栈中之前的......“写访问被拒绝”
     原因:改用户没有对该item的修改权限。尝试去对属性修改时报错解释方法:1、系统管理员开旁路2、在代码里开超级权限/** *超级权限设置属性值 *@paramsession *@paramcomponent *@paramPropertyName *@parampropertyValue *@return */ publicbooleansetProp......
  • 模型超参数基本都没改,测试时加载模型报模型结构不匹配,设置模糊加载模型即:model.load_s
    原因多卡训练;单卡模糊加载进行测试。训练时,通过torch.nn.DataParallel(self.model)进行多卡并行训练;测试时,用单卡模糊加载保存的模型权重,很多模型参数都没有加载成功,自然会导致测试效果很差。解决方法测试时,使用多卡加载模型时,删掉'module.'前缀;或者用单卡加载模型进行测试。......
  • uniapp上拉加载下拉刷新
    page.json配置 {   "path":"pages/my/index",   "style":{    "enablePullDownRefresh":true,//关键    "onReachBottomDistance":50,关键    "app-plus":{     "pullToRef......
  • 火山引擎DataLeap的Data Catalog系统公有云实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群DataCatalog是一种元数据管理的服务,会收集技术元数据,并在其基础上提供更丰富的业务上下文与语义,通常支持元数据编目、查找、详情浏览等功能。目前DataCatalog作为火山引擎大数据研发治理套件Dat......
  • 火山引擎DataLeap的Data Catalog系统公有云实践
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群DataCatalog是一种元数据管理的服务,会收集技术元数据,并在其基础上提供更丰富的业务上下文与语义,通常支持元数据编目、查找、详情浏览等功能。目前DataCatalog作为火山引擎大数据研发治......
  • HomeAssistant中推荐安装的几个加载项
    1.Terminal&SSH这是一款网页终端的插件,登录到HomeAssistant后点击插件即可进入控制台,在控制台中我们可以做许多事情,如:安装HACS、添加/删除/修改文件、以及使用git命令安装各种扩展内容下面我列举一下常用命令:cp//复制文件touch//创建文件cd..//退回上一级目录cd//......
  • Nginx返回的css样式不加载
    不小心修改了nginx.conf,之前的配置全部丢失。好在配置项挺少,就只开启了gzip和转发请求时在请求头中添加原始ip。奇怪的是,部分项目打开后样式丢失。查看控制台,css文件能够正常下载。注意到css的content-type,为text/plain:这样问题原因就很明确了,应该是gzip的配置问题。只要在se......
  • 弹窗加载另一个界面
    1.父组件<template><el-button@click="selectHiddenDangerList()"></el-button><HiddenDangerListv-if="listVisable"ref="hiddenDangerList"></HiddenDangerList></template><script>......