【运维】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服务

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【韩顺平 零基础30天学会Java】程序流程控制(2days)

day1 程序流程控制:顺序控制、分支控制、循环控制 顺序控制:从上到下逐行地执行,中间没有任何判断和跳转。 Java中定义变量时要采用合法的前向引用。 分支控制if-else:单分支、双分支和多分支。 单分支 import java.util.Scann…

Appium-移动端自动测试框架,如何入门?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 1、为什么要使用Appium? 2、如何搭建Appium工具环境?(超详细) 3、通过demo演示Appium的使用 4、Appium如何…

《学爸》成爆款背后,马栏山以BOT模式示范“文化+科技”路径

文|智能相对论 作者|范柔丝 今年暑期档的爆款电影,必有《学爸》一席之地。 这部给众多深陷教育旋涡的家长带来深刻思考的电影,就是马栏山视频文创产业园经过3年筹备,首部本土孵化出品的教育现实体裁院线大电影。 据猫眼专业版数据&#x…

优于立方复杂度的 Rust 中矩阵乘法

中途:三次矩阵乘法 一、说明 几年前,我在 C 年编写了 Strassen 矩阵乘法算法的实现,最近在 Rust 中重新实现了它,因为我继续学习该语言。这是学习 Rust 性能特征和优化技术的有用练习,因为尽管 Strassen 的算法复杂性优…

【LLM数据篇】预训练数据集+指令生成sft数据集

note 在《Aligning Large Language Models with Human: A Survey》综述中对LLM数据分类为典型的人工标注数据、self-instruct数据集等优秀的开源sft数据集:alpaca_data、belle、千言数据集、firefly、moss-003-sft-data多轮对话数据集等 文章目录 note构造指令实例…

【Linux】网络层协议:IP

我们必须接受批评,因为它可以帮助我们走出自恋的幻象,不至于长久在道德和智识上自我陶醉,在自恋中走向毁灭,事实上我们远比自己想象的更伪善和幽暗。 文章目录 一、IP和TCP之间的关系(提供策略 和 提供能力&#xff09…

QT 基本对话框

包括&#xff1a; 1.标准文件对话框 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QTextCodec> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QGridLayout> #include <QFr…

通过DBeaver 给Postgre SQL表 设置主键自增

1.创建表 CREATE TABLE public.company ( id int4 NOT NULL , name text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入数据&#xff08;不传入id&#xff…

【Leetcode】104.二叉树的最大深度

一、题目 1、题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例1: 输入:root = [3,9,20,null,null,15,7] 输出:3示例2: 输入:root = [1,null,2] 输出:2提示: 树中节点的数量在 [0, 104…

并查集及其简单应用

文章目录 一.并查集二.并查集的实现三.并查集的基本应用 一.并查集 并查集的逻辑结构:由多颗不相连通的多叉树构成的森林(一个这样的多叉树就是森林的一个连通分量) 并查集的元素(树节点)用0~9的整数表示,并查集可以表示如下: 并查集的物理存储结构:并查集一般采用顺序结构实…

【Redis】——Redis基础的数据结构以及应用场景

什么是redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。&#xff0c;Redis 还支持 事务 、持久化、Lua 脚本、多种集群方案&#xff08;主…

Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端

一: 使用yum安装的好处是较为方便|环境变量自动配置完成。 1.1: 执行下面的命令,检查是否已安装了jdk # 查看当前是否安装了JDK&#xff0c; [rootwww ~]# rpm -qa |grep java [rootwww ~]# rpm -qa |grep jdk [rootwww ~]# rpm -qa |grep gcj [rootwww ~]# rpm -qa | grep -…

数据结构——二叉搜索树(附带C++实现版本)

文章目录 二叉搜索树概念 二叉树的实际应用二叉树模拟实现存储结构二叉搜索树构成二叉搜索树的查找插入操作中序遍历二叉树的删除循环(利用左子树最右节点&#xff09;递归(利用右子树根节点) 二叉树拷贝二叉树资源的销毁 二叉树实现完整代码总结 二叉搜索树 概念 二叉搜索树…

PHPStudy 安装tp8 php8.2.9

一、PhpStudy升级PHP版本&#xff0c;安装PHP8.2操作步骤 1.1、官网下载最新的php版本 打开Windows版的官网下载&#xff0c;地址&#xff1a;https://windows.php.net/download/ 页面上有不同的PHP版本&#xff0c;这里我们下载的是64位nts版的PHP8.2.9。 1.2、解压下载的文…

2023.8 - java - 泛型

泛型问题的引出&#xff1a; jdk 1.5 引出泛型 // package 泛型; public class index {public static void main (String[] args){test t new test();t.setContent("aaa");int a (int) t.getContent();System.out.println(a);} }class test{Object content;publi…

国内常见的几款可视化Web组态软件

组态软件是一种用于控制和监控各种设备的软件&#xff0c;也是指在自动控制系统监控层一级的软件平台和开发环境。这类软件实际上也是一种通过灵活的组态方式&#xff0c;为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。通常用于工业控制&#xff0c;自动…

[SWPUCTF 2022 新生赛]ez_ez_php

这段代码是一个简单的PHP文件处理脚本。让我们逐行进行分析&#xff1a; error_reporting(0); - 这行代码设置了错误报告的级别为0&#xff0c;意味着不显示任何错误。 if (isset($_GET[file])) { - 这行代码检查是否存在一个名为"file"的GET参数。 if ( substr($_…

无涯教程-Perl - wantarray函数

描述 如果当前正在执行的函数的context正在寻找列表值,则此函数返回true。在标量context中返回false。 语法 以下是此函数的简单语法- wantarray返回值 如果没有context,则此函数返回undef&#xff1b;如果lvalue需要标量,则该函数返回0。 例 以下是显示其基本用法的示例…

记录Taro巨坑,找不到sass类型定义文件

问题 taronutuisassts项目里tsconfig.json一直报红报错。 找不到“sass”的类型定义文件。 程序包含该文件是因为: 隐式类型库 “sass” 的入口点 其实正常人想的肯定是装上 types/sass试试。开始我试过了&#xff0c;没用。删了依赖重装也没用。后面在issue中找到答案了 解决…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…