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

文章目录

  • 一. 引擎的安装
    • 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服务

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/86646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题之数组篇(1)】

目录 1.leetcode-59. 螺旋矩阵 II(题2.题3相当于二分变形)2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)(题4和题5都是排序双指针)4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…

无涯教程-Perl - undef函数

描述 此函数未定义EXPR的值。用于标量,列表,哈希,函数或类型范围。在带有诸如undef $hash {$key}之类的语句的哈希上使用;实际上将指定键的值设置为未定义的值。 如果要从哈希中删除元素,请使用delete函数。 语法 以下是此函数的简单语法- undef EXPRundef返回…

学会Mybatis框架:让你的代码更具灵活性、可维护性、安全性和高效性【二.动态SQL】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Mybatis动态SQL如何应用 1.需求 2.…

resultType和paramstype的区别

文章目录 1. resultType:2. parameterType:3. 总结看这里就够啦!!!!!!举例 1. resultType: 返回值类型,类型即为对象类型,返回结果字段与对象属性…

【洁洁送书第五期】为什么我们要了解可观测性工程

导读 可观测性已成为一个热门话题,并广受关注。随着它的普及,“可观测性”不幸被误作“监控”或“系统遥测”的同义词。可观测性是软件系统的一个特征。而且,只有当团队采用新的实践进行持续开发时,才能在生产软件系统中有效利用这…

07-Vue基础之综合案例——小黑记事本

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…

分布式ID

分布式ID 背景Snowflake(雪花算法)uid-generator实战美团leaf实战代码地址背景 分布式系统,用什么做为主键呢? uuid 太长(MySQL官方有明确的建议主键要尽量越短越好[4],36个字符长度的UUID不符合要求。)、 无规律(在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁…

【Python】代理池针对ip拦截破解

代理池是一种常见的反反爬虫技术,通过维护一组可用的代理服务器,来在被反爬虫限制的情况下,实现数据的爬取。但是,代理池本身也面临着被目标网站针对ip进行拦截的风险。 本文将详细介绍代理池针对ip拦截破解的方法,包含…

【C++杂货铺】探索string的底层实现

文章目录 一、成员变量二、成员函数2.1 默认构造函数2.2 拷贝构造函数2.3 operator2.4 c_str()2.5 size()2.6 operator[ ]2.7 iterator2.8 reserve2.9 resize2.10 push_back2.11 append2.12 operator2.13 insert2.14 erase2.15 find2.16 substr2.17 operator<<2.18 opera…

C++,类的特殊函数练习

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream> using namespace std;cla…

设计模式(9)建造者模式

一、 1、概念&#xff1a;将一个复杂对象的构造与它的表示分离&#xff0c;使得同样的构造过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象&#xff0c;这些对象内部构建间的顺序通常是稳定的&#xff0c;但对象内部的构建通常面临着复杂的变化&#xff1b;建造…

leetcode:338. 比特位计数(python3解法)

难度&#xff1a;简单 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0…

Verilog 入门

Verilog 入门 本内容来自 牛客网Verilog入门特别版 1、一个没有输入和一个输出常数1的输出的电路&#xff0c;输出信号为one module top_module(one);output wire one;assign one 1b1; endmodule2、创建一个具有一个输入和一个输出的模块&#xff0c;其行为类似于电路上的连…

密码学学习笔记(十九):密码学关键术语的解释1

数据加密标准(DES) 数据加密标准是使用最广泛的加密体制&#xff0c;它于1977年被美国国家标准和技术研究所(NIST)采纳为联邦信息处理标准FIPS PUB 46。 DES3DESAES明文分组长度&#xff08;位&#xff09;6464128密文分组长度&#xff08;位&#xff09;6464128密钥长度&…

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-BiGRU-Attention多特征分类预测&#xff0c;多特征输入模型&…

论文解读 | 解释和利用对抗性示例

原创 | 文 BFT机器人 摘要 ABSTRACT 这篇论文研究了神经网络和其他机器学习模型在错误分类对抗性示例方面的问题。对抗性示例是通过对数据中的示例应用微小但故意的扰动来生成的&#xff0c;导致模型输出错误答案。以往的解释主要集中在非线性和过拟合上&#xff0c;然而&…

概念解析 | 稀疏正则化

稀疏正则化&#xff1a;从理论到实践的简要解析 注1&#xff1a;本文系“概念解析”系列之一&#xff0c;致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是&#xff1a;稀疏正则化。 Group-sparsity regularization enforcement: (a) the columns of the… | Dow…

STM32 CubeMX (第三步Freertos中断管理和软件定时)

STM32 CubeMX STM32 CubeMX &#xff08;第三步Freertos中断管理和软件定时&#xff09; STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用STM32 CubeMX 库&#xff0c;配置Fre…

The last packet sent successfully to the server was 0 milliseconds ago.报错

报错图&#xff1a; 解决方法 多半是代码拼写错误&#xff0c;如localhost拼成local。 注意驱动版本应与mysql版本对应 maven包配置按照自己下的位置设置&#xff0c;最好不要默认

c++ day1

定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。例如&#xff0c;输入字符串为"Hello World"&#xff0c;输出结果为"olleH dlroW"&#xff0c;并在主函数内测试该函数。 …