【运维】linkis1.3.2添加jdbc引擎(添加mysql、greenplum、starrocks、doris数据源查询)与配合多数据源管理提交任务初探

一. 引擎的安装

1. 前置工作

安装mysql(略)
 

2. 获取引擎插件

有两种方式:

直接下载引擎插件包 Linkis 引擎插件下载
单独编译引擎插件(需要有 maven 环境)

这里通过单独编译获取插件包

# 编译
cd ${linkis_code_dir}/linkis-engineconn-plugins/jdbc/
mvn clean install
# 编译出来的引擎插件包,位于如下目录中
${linkis_code_dir}/linkis-engineconn-plugins/jdbc/target/out/

执行很快就产生了插件包,比较顺利。

 

3. 上传和加载

引擎插件包上传到服务器的引擎目录下

${LINKIS_HOME}/lib/linkis-engineplugins

上传后目录结构如下所示

linkis-engineconn-plugins/
├── jdbc
│   ├── dist
│   │   └── 4
│   │       ├── conf
│   │       └── lib
│   └── plugin
│       └── 4

 

4. 引擎刷新

4.1. 重启刷新

通过重启 linkis-cg-linkismanager 服务刷新引擎

cd ${LINKIS_HOME}/sbin
sh linkis-daemon.sh restart cg-linkismanager

 

4.2. 检查引擎是否刷新成功

可以查看数据库中的 linkis_engine_conn_plugin_bml_resources 这张表的 last_update_time 是否为触发刷新的时间。(实际因为执行需要时间所以会有延迟)

#登陆到 `linkis` 的数据库 
select * from linkis_cg_engine_conn_plugin_bml_resources;

 
 

二. 测试mysql、starrocks与doris数据库

1. 通过shell提交任务

sh ./bin/linkis-cli -engineType jdbc-4 \
-codeType jdbc -code "show databases;" \
-submitUser user1 -proxyUser user1 \
-runtimeMap wds.linkis.jdbc.connect.url=jdbc:mysql://xxx:port \
-runtimeMap wds.linkis.jdbc.driver=com.mysql.jdbc.Driver \
-runtimeMap wds.linkis.jdbc.username=user \
-runtimeMap wds.linkis.jdbc.password=passwd

 
上述shell是连接mysql的配置,同样地,连接doris和starrocks也是通过mysql协议连接的,所以配置基本一致。

提交后在linkis的管理台可以看到如下查询的结果:
在这里插入图片描述

 

2. 通过(IDE)shell进行提交

在这里插入图片描述

sh ./bin/linkis-cli -creator IDE \
-engineType jdbc-4 -codeType jdbc \
-code "show tables"  \
-submitUser user1 -proxyUser user1 

 

3. 通过接口提交

curl --location --request POST 'http://xxx:8085/api/rest_j/v1/entrance/execute' \
--header 'Token-Code: BML-AUTH' \
--header 'Token-User: user1' \
--header 'Content-Type: application/json' \
--data-raw '{
    "executionContent": {"code": "show databases;", "runType":  "jdbc"},
    "proxyUser":"logsget",
    "params": {
                    "variable": {},
                    "configuration": {
                            "runtime": {
                                    "wds.linkis.jdbc.connect.url":"jdbc:mysql://xxx:3306",  
                                    "wds.linkis.jdbc.driver":"com.mysql.jdbc.Driver",
                                    "wds.linkis.jdbc.username":"root",
                                    "wds.linkis.jdbc.password":"xxx",
                                    "wds.linkis.engine.runtime.datasource.maxVersionId":"2"
                                }
                            }
                    },
    "labels": {
        "engineType": "jdbc-4",
        "executeUser": "user1"
    }
}'
  • 接口是dss提交任务的接口,这里我们可以通过postman进行模拟dss的访问请求
  • header中添加token的验证,这里是我们上篇手动创建的token,以便我们有权限请求
  • 请求体:
    – code:查询语句
    – wds.linkis.jdbc.*:为库的连接信息
    – wds.linkis.engine.runtime.datasource.maxVersionId:重点:用于标识不同的连接,我们暂不分析源码逻辑,linkis会维护一个map(key:连接标识,value:连接【以单例的形式存在】),通过传递不同标识,获取map中对应的连接,如果不添加这个参数,那么在执行任务时,只能找到第一次请求的连接。

 
 

三. 添加greenplum

添加gp驱动包greenplum-jdbc-5.1.4.jar放到

/data01/linkis/lib/linkis-engineconn-plugins/jdbc/dist/4/lib

下,刷新引擎:

cd ${LINKIS_HOME}/sbin
sh linkis-daemon.sh restart cg-linkismanager

等待引擎更新

可以查看数据库中的 linkis_engine_conn_plugin_bml_resources 这张表的 last_update_time 是否为触发刷新的时间。

#登陆到 `linkis` 的数据库 
select * from linkis_cg_engine_conn_plugin_bml_resources;

 
 
调用接口测试

curl --location --request POST 'http://xxx:8085/api/rest_j/v1/entrance/execute' \
--header 'Token-Code: BML-AUTH' \
--header 'Token-User: logsget' \
--header 'Content-Type: application/json' \
--data-raw '{
    "executionContent": {"code": "show databases;", "runType":  "jdbc"},
    "proxyUser":"logsget",
    "params": {
                    "variable": {},
                    "configuration": {
                            "runtime": {
                                    "wds.linkis.jdbc.connect.url":"jdbc:pivotal:greenplum://xxx:5432",  
                                    "wds.linkis.jdbc.driver":"com.pivotal.jdbc.GreenplumDriver",
                                    "wds.linkis.jdbc.username":"xx",
                                    "wds.linkis.jdbc.password":"xxx",
                                    "wds.linkis.engine.runtime.datasource.maxVersionId":"2"
                                }
                            }
                    },
    "labels": {
        "engineType": "jdbc-4",
        "executeUser": "logsget"
    }
}'

 
 

四. 通过linkis的数据源管理提交任务(ing)

linkis的数据源管理

基本逻辑:

  • 在数据源管理创建相关数据源连接,维护到数据库中
  • 遍写任务sql
  • 触发接口提交任务:linkis根据指定数据源名称,查到相关引擎参数,创建连接,或从map中获取链接,然后提交任务。

多数据源功能与优点:

在这里插入图片描述

 
 

五. 官方包安装(失败)(可略)

Linkis 引擎插件下载

提交任务

sh ./bin/linkis-cli -engineType jdbc-4 \
-codeType jdbc -code "show tables" \
-submitUser taiyi -proxyUser taiyi \
-runtimeMap wds.linkis.jdbc.connect.url=jdbc:mysql://11.33.176.205:3306/linkis \
-runtimeMap wds.linkis.jdbc.driver=com.mysql.jdbc.Driver \
-runtimeMap wds.linkis.jdbc.username=xmanager \
-runtimeMap wds.linkis.jdbc.password=XManager_360.cn

报错:

2023-07-27 22:48:40.048 INFO This TaskID_78_otJobId_astJob_2_retry_10 retry, new retry-task is:TaskID_78_otJobId_astJob_2_retry_11, retryCount: 2.reason:ask Engine failed 
errCode: 12003 ,desc: xxx:9101_23 Failed  to async get EngineNode 
LinkisRetryException: errCode: 30002 ,desc:  The em of labels {userCreator=taiyi-
LINKISCLI, codeType=jdbc, engineType=jdbc-4, executeOnce=} not found ,ip: 
xxx ,port: 9101 ,serviceKind: linkis-cg-linkismanager ,ip: 
xxx ,port: 9104 ,serviceKind: linkis-cg-entrance
解决办法:
1.  查看表 linkis_cg_manager_service_instance 是否有数据
2.  查看执行任务的参数是否正确,如 codeType,engineType
3.  可以truncate表之后重启engineconnmanager服务

重启之后:又报类找不到。。。
在这里插入图片描述

排查到这里实属有些心累,因为修改了挺多地方,还是不能正常使用,此时暂时认为官方下载的引擎包不能适配我的环境,接下来下载源码通过编译打包安装。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值