文章目录

  • 1 概述:
  • 2 准备环境(我这里用的是1.5.0):
    • 2.1 idea环境OK,下载一套所需要版本的openlookeng源码:gitee: https://gitee.com/openlookeng/hetu-core github:https://github.com/openlookeng/hetu-core
    • 2.2 自己部署一套对应版本的openlookeng集群用来调试:部署方法:转载:https://blog.csdn.net/openLooKeng/article/details/120088344
  • 3 connector 开发
    • 3.1 在openLooKeng源码根目录创建与Connector名对应的模块
    • 3.2 将当前模块加入io.hetu.core组中,版本需要和当前openLooKeng工程版本一致:
    • 3.3 定义当前工程信息,添加packaging选项为hetu-plugin在打包编译时会将当前工程打包到heto-core的plugin目录下。
    • 3.4 引入 SPI 依赖,每个Plugin工程都会依赖 presto-spi 模块:
    • 3.5 在hetu core根目录下的pom.xml中,将我们新增的Connector 加入到 modules 中
    • 3.6 在hetu-server的src/main/provisio/hetu.xml配置文件中,注册新增的Connector
    • 3.7 hetu-dm模块代码实现
      • 3.7.1 需要实现的类
      • 3.7.2 主要代码示例
    • 3.8 编译整个openLooKeng工程时,我们需要将自定义添加的connector也编译打包到plugin目录下,或者package hetu-dm 模块,将插件包放入环境中
  • 4 测试环境调试
    • 4.1 配置dm.properties
    • 4.2 启动openlookeng集群
      • 4.2.1 执行启动脚本:start.sh
    • 4.2.2 查看日志
    • 4.2.3 登录openlookeng webUI界面进行SQL查询测试
  • 5 金仓connector的实现步骤同达梦相同,并且同属于jdbc数据源,代码大多数可以复用
  • 6 需要注意的问题:
    • 6.1 openlooneng 对JDK版本有要求,需要使用jdk-1.8小版本比较高的版本,我用的是jdk-8u331
    • 6.2 部署openlookeng集群时,可能会出现无法创建java虚拟机的情况,需要修改配置
    • 6.3 KingBaseV7 和 KingBaseV8 的驱动以及URL是不一样的,需要注意,plugin中的代码要与配置文件的格式保持一致

1 概述:

openlookeng架构以及执行逻辑,connector的原理等概念性问题,请自行百度,这里不再阐述

2 准备环境(我这里用的是1.5.0):

2.1 idea环境OK,下载一套所需要版本的openlookeng源码:gitee: https://gitee.com/openlookeng/hetu-core github:https://github.com/openlookeng/hetu-core

2.2 自己部署一套对应版本的openlookeng集群用来调试:部署方法:转载:https://blog.csdn.net/openLooKeng/article/details/120088344

3 connector 开发

3.1 在openLooKeng源码根目录创建与Connector名对应的模块

3.2 将当前模块加入io.hetu.core组中,版本需要和当前openLooKeng工程版本一致:

    <parent><artifactId>presto-root</artifactId><groupId>io.hetu.core</groupId><version>1.5.0</version></parent>

3.3 定义当前工程信息,添加packaging选项为hetu-plugin在打包编译时会将当前工程打包到heto-core的plugin目录下。

    <artifactId>hetu-dm</artifactId><description>Hetu - DM Connector</description><packaging>hetu-plugin</packaging>

3.4 引入 SPI 依赖,每个Plugin工程都会依赖 presto-spi 模块:

     <!-- Presto SPI --><dependency><groupId>io.hetu.core</groupId><artifactId>presto-spi</artifactId><scope>provided</scope></dependency>

3.5 在hetu core根目录下的pom.xml中,将我们新增的Connector 加入到 modules 中

    <modules>......<module>hetu-dm</module>......</modules>

3.6 在hetu-server的src/main/provisio/hetu.xml配置文件中,注册新增的Connector

    <artifactSet to="plugin/dm"><artifact id="${project.groupId}:hetu-dm:zip:${project.version}"><unpack /></artifact></artifactSet>

经过以上步骤,新增Connector的准备工作就已经完成。在开发过程中根据具体实现使用到的类来添加依赖。Plugin使用了独立的类加载器,和其他的类是隔离的,因此Plugin可以使用不同版本的类库,区别于hetu core内部使用的版本。

3.7 hetu-dm模块代码实现

3.7.1 需要实现的类

3.7.2 主要代码示例

DMPlugin:@ConnectorConfig(connectorLabel = "DM : Query and create tables on an external DM database",propertiesEnabled = true)
public class DMPlugin extends JdbcPlugin {public DMPlugin() {super("dm", new DMClientModule());}@Overridepublic Optional<ConnectorWithProperties> getConnectorWithProperties(){ConnectorConfig connectorConfig = DMPlugin.class.getAnnotation(ConnectorConfig.class);Optional<ConnectorWithProperties> connectorWithProperties = ConnectorUtil.assembleConnectorProperties(connectorConfig,Arrays.asList(BaseJdbcConfig.class.getDeclaredMethods()));ConnectorUtil.addConnUrlProperty(connectorWithProperties, "jdbc:dm://host:port");return connectorWithProperties;}
}
DMClientModule:
public class DMClientModule implements Module {@Overridepublic void configure(Binder binder) {binder.bind(JdbcClient.class).to(DMClient.class).in(Scopes.SINGLETON);configBinder(binder).bindConfig(BaseJdbcConfig.class);configBinder(binder).bindConfig(DMConfig.class);}@Provides@Singletonpublic static ConnectionFactory getConnectionFactory(BaseJdbcConfig config, DMConfig dmConfig){Properties connectionProperties = basicConnectionProperties(config);Driver driver;try {driver = (Driver) Class.forName(Constants.DM_JDBC_DRIVER_CLASS_NAME).getConstructor(((Class<?>[]) null)).newInstance();}catch (InstantiationException | ClassNotFoundException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {throw new PrestoException(JDBC_ERROR, e);}return new DriverConnectionFactory(driver, config.getConnectionUrl(),Optional.ofNullable(config.getUserCredentialName()),Optional.ofNullable(config.getPasswordCredentialName()), connectionProperties);}
}

3.8 编译整个openLooKeng工程时,我们需要将自定义添加的connector也编译打包到plugin目录下,或者package hetu-dm 模块,将插件包放入环境中

将此目录放到$openlookeng_home/hetu-server-1.5.0/plugin/ 下,重命名为dm,并将DM连接jdbc的驱动拷贝至此目录下

4 测试环境调试

4.1 配置dm.properties

进入/hetu-server-1.5.0/etc/catalog 目录:
vim dm.properties
配置以下配置项:
connector.name=dm   --此名字与自定义connector的名字保持一致
connection-url=jdbc:dm://ip:5236/DMTEST
connection-user=SYSDBA
connection-password=SYSDBA123配置完成后分发至其他服务器

4.2 启动openlookeng集群

4.2.1 执行启动脚本:start.sh

4.2.2 查看日志

tailf -300 /hetu-server-1.5.0/data/var/log/server.log

如图所示dmplugin加载成功

如图所示配置文件加载成功

4.2.3 登录openlookeng webUI界面进行SQL查询测试

测试结果如图所示:

5 金仓connector的实现步骤同达梦相同,并且同属于jdbc数据源,代码大多数可以复用

6 需要注意的问题:

6.1 openlooneng 对JDK版本有要求,需要使用jdk-1.8小版本比较高的版本,我用的是jdk-8u331

6.2 部署openlookeng集群时,可能会出现无法创建java虚拟机的情况,需要修改配置

vim jvm.config
将下边的配置注掉:
#-XX:+UseG1GC

6.3 KingBaseV7 和 KingBaseV8 的驱动以及URL是不一样的,需要注意,plugin中的代码要与配置文件的格式保持一致

如KingBaseV7的配置文件是:

connector.name=kingbase
connection-url=jdbc:kingbase://IP:54321/test
connection-user=SYSTEM
connection-password=123456

如KingBaseV8的配置文件是:

connector.name=kingbase
connection-url=jdbc:kingbase8://IP:54321/test
connection-user=SYSTEM
connection-password=123456

openlookeng 扩展connector对接达梦和金仓相关推荐

  1. 【总结】对接达梦数据库DM8详细教程

    目录 1.达梦数据库-技术文档 2.软件安装包下载 2.1 iso 安装版 2.2 docker 安装版 3.DM8单机安装部署规范 4.安装操作步骤 4.1 安装docker 4.2 docker安 ...

  2. 国产数据库“第一股”拟上市,22年试炼场终“达梦”

    6月29日,武汉达梦数据库股份有限公司(以下简称「达梦数据」)正式递交招股书,申请上交所科创板上市.一旦上市成功,将成为国产数据库"第一股". 犹如一颗重磅"信号弹&qu ...

  3. 达梦dm8可视化工具_活字格兼容达梦DM8,低代码支持数据库国产化

    DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新.简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库.DM8和同类自主知识产权数据库一起,正在引领数据库国产化的大趋势. ( ...

  4. 达梦数据迁移问题罗列

    目录 一.前言 二.问题罗列 一.前言 最近小编接触到国产的数据库达梦数据库,然后在用达梦数据迁移工具MySQL迁移至达梦的时候遇到了一系列的问题现在罗列一下在这里.目前关于国产的数据库达梦这些资料比 ...

  5. 国产集中式数据库综合对比(达梦、人大金仓、海量)

    1.达梦      达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,官网最新版本名称:DM8.        DM8是达梦公司在总结DM系列产品研发与应用经验的 ...

  6. Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb

    Java 操作多类型数据库下的兼容性验证 第一章:数据库测试 ①[ oracle 数据库不支持分号]ORA-00933: SQL 命令未正确结束 ② [sqlserver 数据库不支持 commit] ...

  7. DBeaver连接达梦|虚谷|人大金仓等国产数据库

    前言 工作中有些项目可能会接触到「达梦.虚谷.人大金仓」等国产数据库,但通常这些数据库自带的连接工具使用并不方便,所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版,下文以达梦为例(其他国 ...

  8. nacos 适配达梦、人大金仓数据库

    文章目录 一.准备工作 1. 阅读官网文档 2. 下载源码,按官网更详细 3. 下载达梦.人大金仓数据库驱动 二.修改nacos源码 2.1. 引入驱动依赖 2.2. 引用数据库 2.3. 修改配置 ...

  9. nacos适配达梦、人大金仓数据库

    准备工作 1.下载nacos源码.编译,官网更详细 https://nacos.io/zh-cn/docs/quick-start.html 2.下载源码,按官网更详细 git地址:https://g ...

最新文章

  1. php调用百度地图技术,调用百度地图
  2. Python2.x与3​​.x版本区别
  3. VTK:图像非最大抑制用法实战
  4. C++cycle sort循环排序的实现算法(附完整源码)
  5. dotnet watch+vs code提升asp.net core开发效率
  6. mysql 设置client char_mysql编码问题:show variables like “%char%”
  7. winform 获取焦点_AutoCAD .NET 二次开发实例(13) 获取块参照坐标并输出到Excel
  8. 我在项目中运用 IOC(依赖注入)--入门篇
  9. “迷失自我”,请记住下面5个网站,让你受益终身
  10. 找出若干个非零数中的最小值以及它们的平均值
  11. VS2022 安装 .NET Framework 4.0的方法
  12. 51精密线路板年终活动,爆款降临
  13. 取色器插件 react-color ChromePicker
  14. voip 语音质量[摘]
  15. 77道Spring面试题以及参考答案(2021年最新版),java开发项目经理面试题
  16. 常见sketch简介
  17. CC00003.LBCHAC——|LBCHACHPC概述|
  18. 女生适合学数据分析吗?过来人告诉你
  19. 单身9年,有天猫双11的陪伴不再寂寞
  20. 超详细的MySQL8.0.20安装教程及其安装问题处理

热门文章

  1. 择校秘籍|北邮计算机 和 北航计算机 应该怎么选?
  2. Webview加载本地图片的方案对比
  3. oracle 增加tns,Oracle11gr2的tnsnam.ora新增TRANSPORT_CONNECT_TIMEOUT参
  4. 用鼠标点击画一个五边形
  5. 魔兽地图编辑器插件YDWE的使用与基本设置8 游戏平衡常数
  6. 学习计算机嵌入式的笔记汇总
  7. 「镁客早报」恒大健康称首款电动汽车拟6月投产;产业链透露苹果正悄悄准备Apple Car...
  8. 劳务报酬所得税java程序计算
  9. 基于Echarts实现可视化数据大屏蓝色HTML土地交易大数据分析模板(1页)
  10. 马上加薪!测试,你的职业发展...