文章目录
- 一. 引擎的安装
- 1. 前置工作
- 2. 获取引擎插件
- 3. 上传和加载
- 4. 引擎刷新
- 4.1. 重启刷新
- 4.2. 检查引擎是否刷新成功
- 二. 测试mysql、starrocks与doris数据库
- 1. 通过shell提交任务
- 2. 通过(IDE)shell进行提交
- 3. 通过接口提交
- 三. 添加greenplum
- 四. 通过linkis的数据源管理提交任务(ing)
- 五. 官方包安装(失败)(可略)
一. 引擎的安装
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服务
重启之后:又报类找不到。。。
排查到这里实属有些心累,因为修改了挺多地方,还是不能正常使用,此时暂时认为官方下载的引擎包不能适配我的环境,接下来下载源码通过编译打包安装。