Skip to main content

2 篇博文 含有标签「spark3.0.1

View All Tags

· 11 分钟阅读
livi12138

概述

团队有需求要在页面上同时使用sql和python语法对数据进行分析,在调研过程中发现linkis可以满足需要,遂将其引入内网,由于使用的是华为MRS,与开源的软件有所不同, 又进行了二次开发适配,本文将分享使用经验,希望对有需要的同学有所帮助。

环境以及版本

  • jdk-1.8.0_112 , maven-3.5.2
  • hadoop-3.1.1,Spark-3.1.1,Hive-3.1.0,zookerper-3.5.9 (华为MRS版本)
  • linkis-1.3.0
  • scriptis-web 1.1.0

依赖调整以及打包

首先从linkis官网上下载1.3.0的源码,然后调整依赖版本

linkis最外层调整pom文件

<hadoop.version>3.1.1</hadoop.version>
<zookerper.version>3.5.9</zookerper.version>
<curaor.version>4.2.0</curaor.version>
<guava.version>30.0-jre</guava.version>
<json4s.version>3.7.0-M5</json4s.version>
<scala.version>2.12.15</scala.version>
<scala.binary.version>2.12</scala.binary.version>

linkis-engineplugin-hive的pom文件

<hive.version>3.1.2</hive.version>

linkis-engineplugin-spark的pom文件

<spark.version>3.1.1</spark.version>

linkis-hadoop-common的pom文件

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId> <!-- 只需要将该行替换即可,替换为 <artifactId>hadoop-hdfs-client</artifactId>-->
<version>${hadoop.version}</version>
</dependency>
将hadoop-hdfs修改为:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs-client</artifactId>
<version>${hadoop.version}</version>
</dependency>

linkis-label-common

org.apache.linkis.manager.label.conf.LabelCommonConfig 修改默认版本,便于后续的自编译调度组件使用

    public static final CommonVars<String> SPARK_ENGINE_VERSION =
CommonVars.apply("wds.linkis.spark.engine.version", "3.1.1");

public static final CommonVars<String> HIVE_ENGINE_VERSION =
CommonVars.apply("wds.linkis.hive.engine.version", "3.1.2");

linkis-computation-governance-common

org.apache.linkis.governance.common.conf.GovernanceCommonConf 修改默认版本,便于后续的自编译调度组件使用

  val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "3.1.1")

val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "3.1.2")

编译

在以上配置都调整好之后,可以开始全量编译,依次执行以下命令

    cd linkis-x.x.x
mvn -N install
mvn clean install -DskipTests

编译错误

  • 如果你进行编译的时候,出现了错误,尝试单独进入到一个模块中进行编译,看是否有错误,根据具体的错误来进行调整
  • 由于linkis中使用了scala语言进行代码编写,建议可以先在配置scala环境,便于阅读源码
  • jar包冲突是最常见的问题,特别是升级了hadoop之后,请耐心调整依赖版本

DataSphereStudio的pom文件

由于我们升级了scala的版本,在部署时会报错,engineplugin启动失败,dss-gateway-support-1.1.0 conn to bml now exit java.net.socketException:Connection reset,这里需要修改scala版本,重新编译。 1.删除掉低版本的 dss-gateway-support jar包, 2.将DSS1.1.0中的scala版本修改为2.12,重新编译,获得新的dss-gateway-support-1.1.0.jar,替换linkis_installhome/lib/linkis-spring-cloud-service/linkis-mg-gateway中原有的jar包

<!-- scala 环境一致 -->
<scala.version>2.12.15</scala.version>

按照上面的依赖版本调整,就能解决大部分问题,如果还有问题则需要对应日志仔细调整。 如果能编译出完整的包,则代表linkis全量编译完成,可以进行部署。

部署

  • 为了让引擎节点有足够的资源执行脚本,我们采用了多服务器部署,大致部署结构如下
  • SLB 1台 负载均衡为轮询
  • ECS-WEB 2台 nginx,静态资源部署,后台代理转发
  • ECS-APP 2台 微服务治理,计算治理,公共增强等节点部署
  • ECS-APP 4台 EngineConnManager节点部署

linkis部署

  • 虽然采用了多节点部署,但是我们并没有将代码剥离,还是把全量包放在服务器上,只是修改了启动脚本,使其只启动所需要的服务

参考官网单机部署示例:https://linkis.apache.org/zh-CN/docs/1.3.0/deployment/deploy-quick

linkis部署注意点

  • 1.部署用户: linkis核心进程的启动用户,同时此用户会默认作为管理员权限,部署过程中会生成对应的管理员登录密码,位于conf/linkis-mg-gateway.properties文件中 Linkis支持指定提交、执行的用户。linkis主要进程服务会通过sudo -u ${linkis-user} 切换到对应用户下,然后执行对应的引擎启动命令,所以引擎linkis-engine进程归属的用户是任务的执行者
  • 该用户默认为任务的提交和执行者,如果你想改为登录用户,需要修改 org.apache.linkis.entrance.restful.EntranceRestfulApi类下对应提交方法的代码 json.put(TaskConstant.EXECUTE_USER, ModuleUserUtils.getOperationUser(req)); json.put(TaskConstant.SUBMIT_USER, SecurityFilter.getLoginUsername(req)); 将以上设置提交用户和执行用户改为Scriptis页面登录用户
  • 2.sudo -u ${linkis-user}切换到对应用户下,如果使用登录用户,这个命令可能会失败,需要修改此处命令。
  • org.apache.linkis.ecm.server.operator.EngineConnYarnLogOperator.sudoCommands
private def sudoCommands(creator: String, command: String): Array[String] = {
Array(
"/bin/bash",
"-c",
"sudo su " + creator + " -c \"source ~/.bashrc 2>/dev/null; " + command + "\""
)
} 修改为
private def sudoCommands(creator: String, command: String): Array[String] = {
Array(
"/bin/bash",
"-c",
"\"source ~/.bashrc 2>/dev/null; " + command + "\""
)
}
  • 3.Mysql的驱动包一定要copy到/lib/linkis-commons/public-module/和/lib/linkis-spring-cloud-services/linkis-mg-gateway/

  • 4.默认是使用静态用户和密码,静态用户即部署用户,静态密码会在执行部署是随机生成一个密码串,存储于${LINKIS_HOME}/conf/linkis-mg-gateway.properties

  • 5 数据库脚本执行,linkis本身需要用到数据库,但是我们再执行linkis1.3.0版本的插入数据的脚本时,发现了报错,我们当时时直接删掉了报错部分的数据

  • 6 Yarn的认证,执行spark任务时会将任务提交到队列上去,会首先获取队列的资源信息,进行判断是否有资源可以提交,这里需要配置是否开启kerberos模式认证和是否使用keytab文件 进行认证,如果开启了文件认证需要将文件放入到服务器对应目录,并且在linkis_cg_rm_external_resource_provider库表中更新信息。

安装web前端

  • web端是使用nginx作为静态资源服务器的,直接下载前端安装包并解压,将其放在nginx服务器对应的目录即可

Scriptis工具安装

  • scriptis 是一个纯前端的项目,作为一个组件集成在DSS的web代码组件中,我们只需要将DSSweb项目进行单独的scriptis模块编译,将编译的静态资源上传至Linkis管理台所在的服务器,既可访问,注意:linkis单机部署默认使用的是session进行校验,需要先登录linkis管理台,再登录Scriptis就可以使用。

Nginx部署举例

nginx.conf

upstream linkisServer{
server ip:port;
server ip:port;
}
server {
listen 8088;# 访问端口
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
#scriptis静态资源
location /scriptis {
# 修改为自己的前端路径
alias /home/nginx/scriptis-web/dist; # 静态文件目录
#root /home/hadoop/dss/web/dss/linkis;
index index.html index.html;
}
#默认资源路径指向管理台前端静态资源
location / {
# 修改为自己的前端路径
root /home/nginx/linkis-web/dist; # 静态文件目录
#root /home/hadoop/dss/web/dss/linkis;
index index.html index.html;
}

location /ws {
proxy_pass http://linkisServer/api #后端Linkis的地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

location /api {
proxy_pass http://linkisServer/api; #后端Linkis的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 600s;
proxy_send_timeout 12s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

如何排查问题

    1. linkis一共有100多个模块,最终启动的服务一共是7个,分别是 linkis-cg-engineconnmanager,linkis-cg-engineplugin,linkis-cg-entrance,linkis-cg-linkismanager, linkis-mg-gateway, linkis-mg-eureka,linkis-ps-publicservice,每一个模块都有这不同的功能,其中linkis-cg-engineconnmanager 负责管理启动引擎服务,会生成对应引擎的脚本来拉起引擎服务,所以我们团队在部署时将linkis-cg-engineconnmanager单独启动在服务器上以便于有足够的资源给用户执行。
    1. 像jdbc,spark.hetu之类的引擎的执行需要一些jar包的支撑,在linkis种称之为物料,打包的时候这些jar包会打到linkis-cg-engineplugin下对用的引擎中,会出现conf 和lib目录,启动这个服务时,会将两个打包上传到配置的目录,会生成两个zip文件,我们使用的是OSS来存储这些物料信息,所以首先是上传到OSS,然后再下载到linkis-cg-engineconnmanager这个服务所在服务器上,然后如果配置了以下两个配置 wds.linkis.enginecoon.public.dir 和 wds.linkis.enginecoon.root.dir ,那么会把包拉到wds.linkis.enginecoon.public.dir这个目录下来,wds.linkis.enginecoon.root.dir这个目录是工作目录,里面存放日志和脚本信息,还有一个lib和conf的软连接到 wds.linkis.enginecoon.public.dir。
    1. 如果要排查引擎日志可以到 wds.linkis.enginecoon.root.dir 配置下的目录去看,当然日志信息也会在Scriptis页面执行的日志上展示,直接粘贴去查找即可。

· 18 分钟阅读
ruY9527

环境以及版本

  • jdk-8 , maven-3.6.3
  • node-14.15.0(是否需要自己编译前端代码调整)
  • Gradle-4.6(是否编译Qualitis质量服务)
  • hadoop-3.1.1,Spark-3.0.1,Hive-3.1.2,Flink-1.13.2,Sqoop-1.4.7 (Apache版本)
  • linkis-1.1.1
  • DataSphereStudio-1.1.0
  • Schudulis-0.7.0
  • Qualitis-0.9.2
  • Visualis-1.0.0
  • Streamis-0.2.0
  • Exchangis-1.0.0
  • Chrome建议100以下的版本

各组件场景以及版本

系统名字版本场景
linkis1.1.1引擎编排,运行执行hive,spark,flinkSql,shell,python等,数据源统一管理等
DataSphereStudio1.1.0实现对任务的dag编排,实现整合其他系统的规范以及统一接入,提供基于SparkSql的服务Api
Schudulis0.7.0任务调度,以及调度详情和重跑,并且提供基于选择时间的补漏数据
Qualitis0.9.2提供内置Sql的版本等功能,对常见的数据质量以及可以自定义sql,对一些不符合规则的数据进行校验并写入到对应的库中
Exchangis1.0.0Hive到Mysql,Mysql到Hive之间的数据交换
Streamis0.2.0流式开发应用中心
Visualis1.0.0可视化报表展示,可以分享外链接

部署顺序

从序号3之后的顺序可以自己选择进行调整.但是在部署exchangis中需要注意一点,将exchangis的sqoop引擎插件,给copy到linkis的lib下的engine插件包下 Schedulis,Qualitis,Exchangis,Streamis,Visualis等系统,都是通过各自的appconn来与dss进行整合,注意每次整合组件-appconn后,进行重启dss对应的服务模块或者重启dss

  1. linkis
  2. DataSphereStudio
  3. Schedulis
  4. Qualitis
  5. Exchangis
  6. Streamis
  7. Visualis

image.png

如果你集成了Skywalking的话,就可以在扩拓扑图中,看到服务的状态和连接状态,如下图 image.png 同时你也可以看清晰到在追踪中看到调用链路,如下图,也便于你定位具体服务的错误日志文件 image.png

依赖调整以及打包

linkis

由于spark是采用了3.x版本的,scala也是需要升级到12版本 原项目代码地址 适配修改代码参考地址

linkis的pom文件

<hadoop.version>3.1.1</hadoop.version>
<scala.version>2.12.10</scala.version>
<scala.binary.version>2.12</scala.binary.version>

<!-- 将hadoop-hdfs 替换成为hadoop-hdfs-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs-client</artifactId>
<version>${hadoop.version}</version>

linkis-hadoop-common的pom文件

       <!-- 注意这里的 <version>${hadoop.version}</version> , 根据你有没有遇到错误来进行调整 --> 
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs-client</artifactId>
<version>${hadoop.version}</version>
</dependency>

linkis-engineplugin-hive的pom文件

<hive.version>3.1.2</hive.version>

linkis-engineplugin-spark的pom文件

<spark.version>3.0.1</spark.version>

SparkScalaExecutor 中 getField 方法需调整下代码

protected def getField(obj: Object, name: String): Object = {
// val field = obj.getClass.getField(name)
val field = obj.getClass.getDeclaredField("in0")
field.setAccessible(true)
field.get(obj)
}

linkis-engineconn-plugin-flink的pom文件

<flink.version>1.13.2</flink.version>

由于flink1.12.2版本和1.13.2有些类的调整,这里目前参考社区同学给出的临时"暴力"方法: 将1.12.2部分的类给copy到1.13.2,调整scala版本到12,自己编译 涉及到flink具体的模块: flink-sql-client_${scala.binary.version}

-- 注意,下列的类是从1.12.2给copy到1.13.2版本来
org.apache.flink.table.client.config.entries.DeploymentEntry
org.apache.flink.table.client.config.entries.ExecutionEntry
org.apache.flink.table.client.gateway.local.CollectBatchTableSink
org.apache.flink.table.client.gateway.local.CollectStreamTableSink

image.pngimage.png

linkis-engineplugin-python

参考pr 如果linkis-engineplugin-python下的resource/python的python.py文件中,有import pandas as pd , 如果不想安装pandas的话,需对其进行移除

linkis-label-common

org.apache.linkis.manager.label.conf.LabelCommonConfig 修改默认版本,便于后续的自编译调度组件使用

    public static final CommonVars<String> SPARK_ENGINE_VERSION =
CommonVars.apply("wds.linkis.spark.engine.version", "3.0.1");

public static final CommonVars<String> HIVE_ENGINE_VERSION =
CommonVars.apply("wds.linkis.hive.engine.version", "3.1.2");

linkis-computation-governance-common

org.apache.linkis.governance.common.conf.GovernanceCommonConf 修改默认版本,便于后续的自编译调度组件使用

  val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "3.0.1")

val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "3.1.2")

编译

确保以上修改和环境都有,依次执行

    cd linkis-x.x.x
mvn -N install
mvn clean install -DskipTests

编译错误

  • 如果你整理进行编译的时候,出现了错误,尝试单独进入到一个模块中进行编译,看是否有错误,根据具体的错误来进行调整
  • 比如下面举例(群友适配cdh低版本的时候,存在py4j版本不适配): 如果你遇到了这种问题,可以调整下有对应方法的版本来进行是否适配

image.png

DataSphereStudio

原项目代码地址 适配修改代码参考地址

DataSphereStudio的pom文件

由于dss依赖了linkis,所有编译dss之前编译linkis

<!-- scala 环境一致 -->
<scala.version>2.12.10</scala.version>

dss-dolphinschuduler-token

DolphinSchedulerTokenRestfulApi: 去掉类型的转换

responseRef.getValue("expireTime")

web调整

前端编译地址 参考pr 将如下目录从master分支的内容覆盖,或者web基于master分支去build image.png

编译

    cd DataSphereStudio
mvn -N install
mvn clean install -DskipTests

Schedulis

原项目代码地址 适配修改代码参考地址

Schedulis的pom文件

       <hadoop.version>3.1.1</hadoop.version>
<hive.version>3.1.2</hive.version>
<spark.version>3.0.1</spark.version>

azkaban-jobtype

下载对应版本的jobtype文件(注意对应好版本): 下载地址 下载完后,将整个jobtypes放在jobtypes下 image.png

Qualitis

原项目代码地址

forgerock包下载

release地址 下的release-0.9.1,解压完后放在.m2\repository\org下即可.

编译

gradle建议使用4.6

cd Qualitis
gradle clean distZip

编译完后,会再qualitis下有一个qualitis-0.9.2.zip文件 image.png

dss-qualitis-appconn编译

将appconn内从给copy到DataSphereStudio下的appconns中(创建dss-qualitis-appconn文件夹),如下图 对dss-qualitis-appconn进行编译,out下的qualitis就是dss整合qualitis的包 image.png

Exchangis

原项目代码地址 适配修改代码参考地址

Exchangis的pom文件

<!-- scala 版本保持一致 -->
<scala.version>2.12.10</scala.version>

后端编译

官方编译文档 assembly-package的target包中wedatasphere-exchangis-1.0.0.tar.gz是自身的服务包 linkis-engineplugin-sqoop是需要放入linkis中(lib/linkis-engineconn-plugins) exchangis-appconn.zip是需要放入dss中(dss-appconns)

mvn clean install 

image.png

前端编译

如果前端你是自己用nginx部署的话,需要注意是拿到dist下面dist文件夹 image.png

Visualis

原项目代码地址 适配修改代码参考地址

Visualis的pom文件

<scala.version>2.12.10</scala.version>

编译

官方编译文档 assembly下的target中visualis-server-zip是自身服务的包 visualis-appconn的target是visualis.zip是dss需要的包(dss-appconns) build是前端打出来的包

cd Visualis
mvn -N install
mvn clean package -DskipTests=true

image.png

Streamis

原项目代码地址 适配修改代码参考地址

Streamis的pom文件

<scala.version>2.12.10</scala.version>

streamis-project-server的pom文件

       <!-- 如果你这里是1.0.1的话,就调整到${dss.version} -->
<dependency>
<groupId>com.webank.wedatasphere.dss</groupId>
<artifactId>dss-sso-integration-standard</artifactId>
<version>${dss.version}</version>
<scope>compile</scope>
</dependency>

编译

官方编译文档 assembly下target包wedatasphere-streamis-0.2.0-dist.tar.gz是自身后端服务的包 streamis-appconn下target的streamis.zip包是dss需要的(dss-appconns) dist下的dist是前端的包

cd ${STREAMIS_CODE_HOME}
mvn -N install
mvn clean install

image.png

安装部署

官方部署地址 常见错误地址

路径统一

建议将相关的组件,部署同一个路径(比如我这里全部解压在/home/hadoop/application下) image.png

linkis部署注意点

deploy-config文件夹

db.sh中, MYSQL配置的linkis连接的地址,HIVE的元数据连接地址 linkis-env.sh

-- 保存script脚本的路径,下一次会有一个用户名字的文件夹,对应用户的脚本就存放在该文件夹中
WORKSPACE_USER_ROOT_PATH=file:///home/hadoop/logs/linkis
-- 存放物料以及引擎执行的log文件
HDFS_USER_ROOT_PATH=hdfs:///tmp/linkis
-- 引擎每次执行的log以及启动engineConnExec.sh相关的信息
ENGINECONN_ROOT_PATH=/home/hadoop/logs/linkis/apps
-- Yarn主节点访问地址(Active resourcemanager)
YARN_RESTFUL_URL
-- Hadoop/Hive/Spark的conf地址
HADOOP_CONF_DIR
HIVE_CONF_DIR
SPARK_CONF_DIR
-- 指定对应的版本
SPARK_VERSION=3.0.1
HIVE_VERSION=3.1.2
-- 指定linkis安装后的路径,比如我这里就同意指定在对应组件下的路径
LINKIS_HOME=/home/hadoop/application/linkis/linkis-home

如果你使用了flink的话,可以尝试从 flink-engine.sql 导入到linkis的数据库中.

需要修改@FLINK_LABEL版本为自己对应的版本,yarn的队列默认是default.

同时这个版本,如果你遇见了"1G"转换数字类型的错误,尝试去掉1g的单位以及正则校验的规则.参考如下:

flink3.png

lzo使用

如果你的hive使用了lzo的话,将对应的lzo的jar包给copy到hive路径下.比如下面路径:

lib/linkis-engineconn-plugins/hive/dist/v3.1.2/lib

常见问题注意点

  • Mysql的驱动包一定要copy到/lib/linkis-commons/public-module/和/lib/linkis-spring-cloud-services/linkis-mg-gateway/
  • 初始化密码在conf/linkis-mg-gateway.properties中的wds.linkis.admin.password
  • ps-cs 在启动脚本中,有可能存在存在失败的情况,如果有的话,使用 sh linkis-daemon.sh ps-cs , 对其进行单独启动
  • 目前日志是有时间备份的话,有时候之前的错误日志找不到的话,可能是备份到对应日期的文件夹里去了
  • 目前lib/linkis-engineconn-plugins是默认只有spark/shell/python/hive,如果你想要appconn,flink,sqoop就分别去dss中,linkis和exchangis中获取
  • 配置文件版本检查
linkis.properties中,flink看有没有使用
wds.linkis.spark.engine.version=3.0.1
wds.linkis.hive.engine.version=3.1.2
wds.linkis.flink.engine.version=1.13.2

image.png image.png

错误记录

  1. 版本不兼容,如果你遇到了下面这种错误的话,是scala版本是否没有完全保持一致,检查后再编译一下即可.

1905943989d7782456c356b6ce0d72b.png

  1. yarn配置Active节点地址,如果是配置了Standby地址的话,就会出现如下的错误

1ca32f79d940016d72bf1393e4bccc8.jpg

DSS部署注意点

官方安装文档

config文件夹

db.sh: 配置dss的数据库 config.sh

-- dss的安装路径,比如我这里就定义在dss下的文件夹中
DSS_INSTALL_HOME=/home/hadoop/application/dss/dss

conf文件夹

dss.properties

# 主要检查spark/hive等版本有,如果没有,就追加上
wds.linkis.spark.engine.version=3.0.1
wds.linkis.hive.engine.version=3.1.2
wds.linkis.flink.engine.version=1.13.2

dss-flow-execution-server.properties

# 主要检查spark/hive等版本有,如果没有,就追加上
wds.linkis.spark.engine.version=3.0.1
wds.linkis.hive.engine.version=3.1.2
wds.linkis.flink.engine.version=1.13.2

如果调度是想使用dolphinscheduler的话,请参数这个pr添加对应的spark/hive版本 参考pr

dss-appconns

exchangis,qualitis,streamis,visualis 都分别要从 Exchangis , Qualitis , Streamis, Visualis 的项目去获取

常见问题注意点

  • 由于dss我们整合了schedulis,qualitis,exchangis等组件,所有创建一个项目会同步调用这些组件的接口创建,所以确保dss_appconn_instance中的配置路径都是正确的,可以访问的
  • chrome浏览器建议内核使用10版本一下的,否则会出现你可以单独Scdulis,Qaulitis等组件,但是却无法通过dss登录成功问题
  • hostname和ip,如果是使用ip访问的话,执行appconn-install.sh安装的时候,也确保是ip. 否则会出现访问其他组件的时候,会提示没有登录或者没有权限

ec4989a817646f785c59f6802d0fab2.jpg

Schedulis部署注意点

官方部署文档

conf文件夹

azkaban.properties

# azkaban.jobtype.plugin.dir和executor.global.properties这里最好改成绝对路径
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/plugins/jobtypes

# Loader for projects
executor.global.properties=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/conf/global.properties

# 引擎的版本
wds.linkis.spark.engine.version=3.0.1
wds.linkis.hive.engine.version=3.1.2
wds.linkis.flink.engine.version=1.13.2

web模块

plugins/viewer/system/conf: 这里需要配置数据库连接地址,与schedulis保持一致 azkaban.properties: 用户参数和系统管理的配置

viewer.plugins=system
viewer.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/plugins/viewer

常见问题注意点

如果出现资源或者web界面出现没有css等静态文件的话,将相关的路径修改为绝对路径 如果出现配置文件加载不到的问题,也可以将路径修改为绝对路径 比如:

### web模块中
web.resource.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/web/
viewer.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/plugins/viewer

### exec模块中
azkaban.jobtype.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/plugins/jobtypes
executor.global.properties=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/conf/global.properties

Qualitis部署注意点

官方部署文档

conf文件夹

application-dev.yml

  # 这里配置正确的spark版本
spark:
application:
name: IDE
reparation: 50
engine:
name: spark
version: 3.0.1

Exchangis部署注意点

官方部署文档

常见问题注意点

如果点击数据源出现没有发布的错误的话,可以尝试将linkis_ps_dm_datasource的published_version_id值修改为1(如果是null的话)

Visualis

官方部署文档

常见问题注意点

如果出现预览视图一致出不来的话,请检查bin/phantomjs该文件是否完整上传. 如果能看到如下结果的话,说明是上传是完整的

./phantomjs -v
2.1.1

Streamis

官方部署文档

dss-appconn

qualitis,exchangis,streamis,visualis是分别要从各种的模块中编译好,copy到dss下的dss-appconns中,然后执行bin下的appconn-install.sh来为各自的组件进行安装 如果你在整合的时候,如果到一些如下的Sql脚本错误的话,请检测错误的Sql周边是否有注释,如果有的话,删掉注释再重新appconn-install一遍尝试 903ceec2f69fc1c7a2be5f309f69726.png 比如qualitis举例,下面的ip和host端口,根据自己具体使用的来

qualitis
127.0.0.1
8090

Nginx部署举例

linkis.conf: dss/linkis/visualis 前端 exchangis.conf: exchangis前端 streamis.conf: streamis前端 Schedulis和Qualitis是分别在自己项目中. linkis/visualis需要将前端打包出来的dist或者build在这里修改为对应组件的名字 image.png image.png image.png

linkis.conf

server {
listen 8089;# 访问端口
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location /dss/visualis {
# 修改为自己的前端路径
root /home/hadoop/application/webs; # 静态文件目录
autoindex on;
}

location /dss/linkis {
# 修改为自己的前端路径
root /home/hadoop/application/webs; # linkis管理台的静态文件目录
autoindex on;
}

location / {
# 修改为自己的前端路径
root /home/hadoop/application/webs/dist; # 静态文件目录
#root /home/hadoop/dss/web/dss/linkis;
index index.html index.html;
}

location /ws {
proxy_pass http://127.0.0.1:9001;#后端Linkis的地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

location /api {
proxy_pass http://127.0.0.1:9001; #后端Linkis的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 600s;
proxy_send_timeout 12s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

exchangis.conf

server {
listen 9800; # 访问端口 如果该端口被占用,则需要修改
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
# 修改为自己路径
root /home/hadoop/application/webs/exchangis/dist/dist; # Exchangis 前端部署目录
autoindex on;
}

location /api {
proxy_pass http://127.0.0.1:9001; # 后端Linkis的地址,需要修改
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 600s;
proxy_send_timeout 12s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

streamis.conf

server {
listen 9088;# 访问端口 如果该端口被占用,则需要修改
server_name localhost;
location / {
# 修改为自己的路径
root /home/hadoop/application/webs/streamis/dist/dist; # 请修改成Streamis前端的静态文件目录
index index.html index.html;
}
location /api {
proxy_pass http://127.0.0.1:9001; #后端Linkis的地址,请修改成Linkis网关的ip和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x_real_ipP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 4s;
proxy_read_timeout 600s;
proxy_send_timeout 12s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}

#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}