【运维】linkis安装dss保姆级教程与踩坑实践

news2024/11/26 6:25:05

文章目录

  • 一. 安装准备
  • 二. 创建用户
  • 三. 准备安装包
  • 四. 修改配置
    • 1. 修改config.sh
    • 2. 修改db.sh
  • 五、安装和使用
    • 1. 执行安装脚本
    • 2. 启动服务
    • 3. 查看验证是否成功
  • 六. 报错处理
    • 报错一:The user is not logged in
    • 报错二:dss接口报错
    • 报错三:执行没有输出结果

dss官方安装文档

 

一. 安装准备

  • 需要的命令工具(安装时会自动检查,并安装,如果安装失败则需手动安装):telnet; tar; sed; dos2unix; mysql; yum; java; unzip; zip; expect
  • 需要安装的软件:MySQL (5.5+); JDK (1.8.0_141以上); Nginx
  • Tips: 请确保已安装Links

 

二. 创建用户

  1. 假设部署用户是taiyi账号
  2. 在所有需要部署的机器上创建部署用户,用于安装:sudo useradd taiyi
  3. 改部署用户权限:vi /etc/sudoers
    taiyi ALL=(ALL) NOPASSWD: NOPASSWD: ALL

 

三. 准备安装包

下载安装包:DSS Release-1.1.1,或者自己编译

这里选择了一键安装的dss安装包,安装起来比较方便。

DSS 一键安装部署包的层级目录结构如下:

├── dss_install # 一键部署主目录
  ├── bin # 用于一键安装,以及一键启动 DSS
  ├── conf # 一键部署的参数配置目录
  ├── wedatasphere-dss-x.x.x-dist.tar.gz # DSS后端安装包
  ├── wedatasphere-dss-web-x.x.x-dist.zip # DSS前端安装包

 

四. 修改配置

1. 修改config.sh

### deploy user
deployUser=taiyi

### DSS Web
DSS_NGINX_IP=dss安装所在ip或hostname
DSS_WEB_PORT=8085

### DSS VERSION
DSS_VERSION=1.1.1


LINKIS_HOME=
###  EUREKA install information
########## 这些配置会产生dss的nginx配置,注意别写默认的127.0.0.1
###  You can access it in your browser at the address below:http://${EUREKA_INSTALL_IP}:${EUREKA_PORT}
###  Microservices Service Registration Discovery Center
LINKIS_EUREKA_INSTALL_IP=linkis EUREKA所在节点ip
LINKIS_EUREKA_PORT=20303
#LINKIS_EUREKA_PREFER_IP=true

###  Gateway install information
LINKIS_GATEWAY_INSTALL_IP=linkis GATEWAY所在节点ip
LINKIS_GATEWAY_PORT=9001
##########

## java application default jvm memory
export SERVER_HEAP_SIZE="512M"


##sendemail配置,只影响DSS工作流中发邮件功能
EMAIL_HOST=smtp.163.com
EMAIL_PORT=25
EMAIL_USERNAME=xxx@163.com
EMAIL_PASSWORD=xxxxx
EMAIL_PROTOCOL=smtp

### Save the file path exported by the orchestrator service
ORCHESTRATOR_FILE_PATH=/home/taiyi/dss1.1.1/orchestrator-service
### Save DSS flow execution service log path
EXECUTION_LOG_PATH=/home/taiyi/dss1.1.1/logs

 

2. 修改db.sh

### for DSS-Server and Eventchecker APPCONN
MYSQL_HOST=ip
MYSQL_PORT=3306
MYSQL_DB=linkis_dss
MYSQL_USER=user
MYSQL_PASSWORD=pd

#主要是配合scriptis一起使用,如果不配置,会默认尝试通过$HIVE_CONF_DIR 中的配置文件获取
# 或者不配置、或找不到配置则在scriptis使用不了hive
HIVE_META_URL="jdbc:mysql://hostname:3306/hivedb?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false"
HIVE_META_USER="user"
HIVE_META_PASSWORD="pd"

 

五、安装和使用

1. 执行安装脚本

cd xx/dss_install/bin
sh install.sh

2. 启动服务

在xx/dss_install/bin目录下执行启动服务脚本

sh start-all.sh

如果启动产生了错误信息,可以查看具体报错原因。启动后,各项微服务都会进行通信检测,如果有异常则可以帮助用户定位异常日志和原因。

3. 查看验证是否成功

  • 用户可以在Linkis的Eureka界面查看 DSS 后台各微服务的启动情况,默认情况下DSS有7个微服务
  • 用户可以使用谷歌浏览器访问以下前端地址:http://DSS_NGINX_IP:DSS_WEB_PORT 启动日志会打印此访问地址(在xx/dss_install/conf/config.sh中也配置了此地址)。

 

六. 报错处理

报错一:The user is not logged in

解决方式:手动添加令牌

日志分析

2023-07-26 20:52:04.149 [INFO ] [main                                    ] o.a.l.h.d.DWSHttpClient (110) [org$apache$linkis$httpclient$AbstractHttpClient$$addAttempt$1] - The user is not logged in, please log in first, you can set a retry
2023-07-26 20:52:04.153 [ERROR] [main                                    ] c.w.w.d.c.u.DSSExceptionUtils (42) [lambda$handling$0] - execute failed, reason: org.apache.linkis.httpclient.exception.HttpClientRetryException: errCode: 10900 ,desc: The user is not logged in, please log in first, you can set a retry, message: 

这里是dds向links的gateway接口请求令牌
{"method":"/api/rest_j/v1/bml/upload","status":-1,"message":"Token Authentication Failed, token: BML-AUTH,tokenUser: taiyi, reason: errCode: 15201 ,desc: Token is not valid or stale(token 令牌无效或已过期)! ,ip: bi50v.poc.bjmd.qihoo.net ,port: 9001 ,serviceKind: linkis-mg-gateway","data":{}} ,ip: bi50v.poc.bjmd.qihoo.net ,port: 9002 ,serviceKind: dss-framework-project-server
        at org.apache.linkis.httpclient.AbstractHttpClient.org$apache$linkis$httpclient$AbstractHttpClient$$addAttempt$1(AbstractHttpClient.scala:115) ~[linkis-httpclient-1.1.1.jar:1.1.1]
        at org.apache.linkis.httpclient.AbstractHttpClient.execute(AbstractHttpClient.scala:123) ~[linkis-httpclient-1.1.1.jar:1.1.1]
        at org.apache.linkis.httpclient.AbstractHttpClient.execute(AbstractHttpClient.scala:92) ~[linkis-httpclient-1.1.1.jar:1.1.1]
        at org.apache.linkis.bml.client.impl.HttpBmlClient.uploadResource(HttpBmlClient.scala:313) ~[linkis-bml-client-1.1.1.jar:1.1.1]
        at com.webank.wedatasphere.dss.framework.appconn.service.impl.AppConnResourceServiceImpl.upload(AppConnResourceServiceImpl.java:121) ~[dss-appconn-framework-1.1.1.jar:?]
        at 

通过查看日志堆栈,基本可以定位到,dss调用links的gateway接口发送令牌,以便能成功与linkis连通,但因为令牌的原因(令牌无效或已过期)导致dss无法通过linkis gateway的校验。所以我们需要找到符合逻辑的令牌。

 

通过阅读相关linkis gateway代码知道,令牌存在linkis_mg_gateway_auth_token表中

在这里插入图片描述

而这些令牌是linkis安装时进行初始化的,接着看dss提供的令牌是:BML-AUTH,这里显然没有,那既然这样手动添加一个BML-AUTH令牌。
在这里插入图片描述

重启linkis服务,访问前端,输入用户名密码,进来了。
在这里插入图片描述
 

报错二:dss接口报错

在这里插入图片描述

rg.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\n\tat 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadEx
ecutor.java:409)\n\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\
tat java.lang.Thread.run(Thread.java:748)\nCaused by: 
org.apache.ibatis.exceptions.PersistenceException: \n### Error querying database.  
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC 
Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: 
wait millis 6000, active 0, maxActive 20, creating 0, createErrorCount 98652\n### The 
error may exist in URL [jar:file:/home/taiyi/linkis1.3.2/install/lib/linkis-public-
enhancements/linkis-ps-publicservice/linkis-metadata-
1.3.2.jar!/mapper/common/HiveMetaDao.xml]\n### The error may involve 
org.apache.linkis.metadata.hive.dao.HiveMetaDao.getAllDbs\n### The error occurred while
 executing a query\n### Cause: 
 org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC 
 Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: 
 wait millis 6000, active 0, maxActive 20, creating 0, createErrorCount 98652\n\tat 
org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)\n\tat 

通过观察报错信息getAllDbs所用的连接配置,定位到linkis-ps-publicservice模块下的配置出现了问题,如下:

修改配置:
vim conf/db.sh
vim conf/linkis-ps-publicservice.properties

### Provide the DB information of Hive metadata database.
### Attention! If there are special characters like "&", they need to be enclosed in quotation marks.
HIVE_META_URL="jdbc:mysql://hive_meta_hive_db:3306/hivedb?createDatabaseIfNotExist=true'&'amp;useUnicode=true'&'amp;characterEncoding=UTF-8'&'amp;useSSL=false"

而错误的原因就是:

Attention! If there are special characters like “&”, they need to be enclosed in quotation marks.

 

报错三:执行没有输出结果

执行没有输出结果,报错如下:
在这里插入图片描述

具体是输出结果的路径配置的的不对,而输出结果路径是在安装时配置的,如下在install脚本中

在这里插入图片描述

安装后存在两个位置,修改:

vim install/conf/linkis-env.sh
 在这里插入图片描述

vim linkis-cg-entrance.properties
在这里插入图片描述

 

重启linkis,再执行Script:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bigemap如何添加arcgis地图?

批量添加视频教程 相关链接:添加卫星影像图 教程 说明:批量添加可以同时添加多个在线地图,一次性添加完成(批量添加无法验证地址是否可以访问) 添加后如下图: 第一步 : 制作地图配置文件&…

从小白到大神之路之学习运维第80天-------Kubernetes企业级高可用集群部署

第四阶段 时 间:2023年8月14日 参加人:全班人员 内 容: Kubernetes 企业级高可用部 目录 一、Kubernetes高可用项目介绍 二、项目架构设计 (一)项目主机信息 (二)项目架构图 &#…

私域流量运营的软件终点是App?

2023年,中国新生人口出生人数预测只有780W,少得可怜。微信、支付宝、抖音、小红书等社交平台,在21世纪20年代风生水起,伴随者人口红利的增长,奠定了中国公域流量平台的位置。 市场是千变万化的。人口急剧缩减&#xf…

力扣:63. 不同路径 II(Python3)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从…

企业流程化管理有什么好处?企业实现流程化管理需要哪些步骤?

在当今快速发展的商业环境中,企业需要一个高效、可靠的管理系统来支持其日常运营和持续发展。流程管理作为一种系统化的管理方法,通过对工作流程的标准化、规范化、透明化等手段,使企业管理更具针对性、效率性和可控性。本文将通过介绍流程管…

【100天精通python】Day35:一文掌握GUI界面编程基本操作

目录 专栏导读 1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库 1.3 GUI应用程序的组成和架构 2 使用Tkinter 库 进行GUI编程 2.1 使用Tkinter库进行GUI编程的基本流程 2.2 使用Tkinter库进行GUI编程 2.2.1 导入Tkinter库 2.2.2 添加标签和…

TCP/IP协议追层分析物理层(第三十九课)

TCP/IP协议追层分析物理层(第三十九课) 1 物理层:建立、维护、断开物理连接,定义了接口及介质,实现了比特流的传输。 1、传输介质分类 有线介质:网线(双绞线)、光纤 无线介质:无线电 微波 激光 红外线 2、双绞线分类: 五类cat5: 适用于100Mbps 超五类cat5e:适用于…

深入源码分析kubernetes informer机制(二)Reflector

[阅读指南] 这是该系列第二篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 Reflector是什么整体结构工作流程list拉取数据缓存resync操作watch监听操作 总结 Reflector是什么 reflector在informer…

神经网络分类算法原理详解

目录 神经网络分类算法原理详解 神经网络工作流程 反向传播算法 1) 反向传播原理 2) 应用示例 总结 正向传播 (forward-propagation):指对神经网络沿着输入层到输出层的顺序,依次计算并存储模型的中间变量。 反向传播 &a…

泛微 E-Office文件上传漏洞复现

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

牛客多校题解 | I Non-Puzzle: Segment Pair 扫描线

给n对区间,要求每对区间恰好选一个使得选出来的n个区间有交集,问有多少方案数 可以从每一个点开始考虑 如果前面的点没有任何可行的方案,那么新点就可以作为左端点,对答案的贡献为 向后扫描的过程中,如果新的点有增加…

2023-08-15 linux mipi 屏幕调试:有一个屏幕开机时候不显示,开机后按power 按键休眠唤醒就可以显示。原因是reset gpio 被复用

一、现象:今天更新了一个新版本的buildroot linux sdk ,调试两个mipi 屏幕,这两个屏幕之前在其他的sdk都调好了的,所有直接把配置搬过来。但是有一个屏幕可以正常显示,有一个屏幕开机时候不显示,开机后按po…

油画|怀念《记忆中的乌篷船》

《记忆中的乌篷船》 90x60cm 陈可之1998年绘 油画《记忆中的乌篷船》,描绘着晚霞中长江边的几艘乌篷船。寻常的景象,流淌着岁月的痕迹,是许多人的遥远回忆。 乌篷船处于画面中心,用焦点透视法,把近处的石板&#xff0…

k8s集群部署vmalert和prometheusalert实现钉钉告警

先决条件 安装以下软件包:git, kubectl, helm, helm-docs,请参阅本教程。 1、安装 helm wget https://xxx-xx.oss-cn-xxx.aliyuncs.com/helm-v3.8.1-linux-amd64.tar.gz tar xvzf helm-v3.8.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin…

从零开始的机械臂yolov5抓取gazebo仿真(二)

使用moveit_setup_assistant配置机械臂(上) 观察机械臂模型 上一节中拿到了sunday_description功能包,将功能包放进工作空间进行编译,可将工作空间路径写进.bashrc文件中,这样就不必每次都source了 例如&#xff1a…

I2C连续读写实现

IIC系列文章: (1)I2C 接口控制器理论讲解 (2)I2C接口控制设计与实现 (3)I2C连续读写实现 文章目录 前言一、 i2c_bit_shift 模块分析二、 i2c_control 模块实现三、 i2c_control 模块仿真测试前言 上文的 i2c_bit_shift 模块说完了,我们发现实现一个字节的写操作还是可以实现…

为什么CAN要采取双绞线布局?

摘要: 在CAN总线应用中,一般建议使用屏蔽双绞线进行组网、布线,本文将详细讲解为什么CAN总线要采取双绞线的布局。 CAN(Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来…

【解决】Kafka Exception thrown when sending a message with key=‘null‘ 异常

问题原因: 如下图,kafka 中配置的是监听域名的方式,但程序里使用的是 ip:port 的连接方式。 解决办法: kafka 中配置的是域名的方式,程序里也相应配置成 域名:port 的方式(注意:本地h…

Medical Isolated Power Supply System in Angola

安科瑞 华楠 Abstract: Diagnosis and treatment in modern hospitals are inseparable from advanced medical equipment, which are inseparable from safe and reliable power supply. Many operations often last for several hours, and the consequences of a sudden pow…

js 构造函数

js 构造函数 new Pig() ---- 创建新的空对象 this 指向新对象 this.name name --------修改this,添加新的属性。 最后返回新的对象