快速单机部署

1.2 添加部署用户

以hadoop用户为例:

先查看系统中是否已经有 hadoop 用户,若已经存在,则直接授权即可;若不存在,先创建用户,再授权。

查看是否已存在 hadoop 用户

若不存在,则需要创建 hadoop 用户,并加入 hadoop 用户组

  1. $ sudo useradd hadoop -g hadoop
  2. $ vi /etc/sudoers
  3. #免密配置
  4. hadoop ALL=(ALL) NOPASSWD: NOPASSWD: ALL

以下操作都是在hadoop用户下进行

2. 配置修改

2.1 安装包准备

上传安装包apache-linkis-x.x.x-incubating-bin.tar.gz后,进行解压安装包

  1. $ tar -xvf apache-linkis-x.x.x-incubating-bin.tar.gz

解压后的目录结构如下

  1. -rw-r--r-- 1 hadoop hadoop 531847342 Feb 21 10:10 apache-linkis-1.0.3-incubating-bin.tar.gz
  2. drwxrwxr-x 2 hadoop hadoop 4096 Feb 21 10:13 bin //执行环境检查和安装的脚本
  3. drwxrwxr-x 2 hadoop hadoop 4096 Feb 21 10:13 deploy-config // 部署时依赖的DB等环境配置信息
  4. -rw-r--r-- 1 hadoop hadoop 1707 Jan 22 2020 DISCLAIMER-WIP
  5. -rw-r--r-- 1 hadoop hadoop 66058 Jan 22 2020 LICENSE
  6. drwxrwxr-x 2 hadoop hadoop 16384 Feb 21 10:13 licenses
  7. drwxrwxr-x 7 hadoop hadoop 4096 Feb 21 10:13 linkis-package // 实际的软件包,包括lib/服务启动脚本工具/db的初始化脚本/微服务的配置文件等
  8. -rw-r--r-- 1 hadoop hadoop 83126 Jan 22 2020 NOTICE
  9. -rw-r--r-- 1 hadoop hadoop 7900 Jan 22 2020 README_CN.md
  10. -rw-r--r-- 1 hadoop hadoop 8184 Jan 22 2020 README.md

2.2 配置数据库信息

vim deploy-config/db.sh

  1. # Linkis自身业务的数据库信息
  2. MYSQL_HOST=xx.xx.xx.xx
  3. MYSQL_PORT=3306
  4. MYSQL_DB=linkis_test
  5. MYSQL_USER=test
  6. MYSQL_PASSWORD=xxxxx
  7. # 提供 Hive 元数据数据库的 DB 信息,如果不涉及hive引擎(或则只是简单试用),可以不配置
  8. #主要是配合scriptis一起使用,如果不配置,会默认尝试通过$HIVE_CONF_DIR 中的配置文件获取
  9. HIVE_META_URL="jdbc:mysql://10.10.10.10:3306/hive_meta_demo?useUnicode=true&characterEncoding=UTF-8"
  10. HIVE_META_USER=demo # HiveMeta元数据库的用户
  11. HIVE_META_PASSWORD=demo123 # HiveMeta元数据库的密码

2.3 配置基础变量

文件位于deploy-config/linkis-env.sh

部署用户

  1. deployUser=hadoop #执行部署的用户,为 1.2 步骤给中创建的用户

基础目录配置(可选)

快速单机部署 - 图8注意

根据实际情况确定是否需要调整,可以选择使用默认值

  1. # 指定用户使用的目录路径,一般用于存储用户的脚本文件和日志文件等,是用户的工作空间。 对应的配置文件配置项为 wds.linkis.filesystem.root.path(linkis.properties)
  2. WORKSPACE_USER_ROOT_PATH=file:///tmp/linkis
  3. # 结果集日志等文件路径,用于存储Job的结果集文件 wds.linkis.resultSet.store.path(linkis-cg-entrance.properties) //如果未配置 使用HDFS_USER_ROOT_PATH的配置
  4. RESULT_SET_ROOT_PATH=file:///tmp/linkis
  5. # 结果集日志等文件路径,用于存储Job的结果集文件 wds.linkis.filesystem.hdfs.root.path(linkis.properties)
  6. HDFS_USER_ROOT_PATH=hdfs:///tmp/linkis
  7. # 存放执行引擎的工作路径,需要部署用户有写权限的本地目录 wds.linkis.engineconn.root.dir(linkis-cg-engineconnmanager.properties)
  8. ENGINECONN_ROOT_PATH=/appcom/tmp

Yarn的ResourceManager的地址

注意

如果需要使用Spark引擎 则需要配置

  1. #可以通过访问http://xx.xx.xx.xx:8088/ws/v1/cluster/scheduler 接口确认是否可以正常访问
  2. YARN_RESTFUL_URL=http://xx.xx.xx.xx:8088

执行spark任务时,需要使用到yarn的ResourceManager,linkis默认它是未开启权限验证的,如果ResourceManager开启了密码权限验证,请安装部署后, 修改数据库表 linkis_cg_rm_external_resource_provider 插入yarn数据信息,详细可以参考查看yarn地址是否配置正确

基础组件环境信息

注意" class="reference-link">快速单机部署 - 图10注意

可以通过用户的系统环境变量配置, 如果通过系统环境变量配置的,deploy-config/linkis-env.sh配置文件中可以不进行配置 直接注释掉

  1. ##如果不使用Hive、Spark等引擎且不依赖Hadoop,则不需要配置以下环境变量
  2. #HADOOP
  3. HADOOP_HOME=/appcom/Install/hadoop
  4. HADOOP_CONF_DIR=/appcom/config/hadoop-config
  5. #Hive
  6. HIVE_HOME=/appcom/Install/hive
  7. HIVE_CONF_DIR=/appcom/config/hive-config
  8. #Spark
  9. SPARK_HOME=/appcom/Install/spark
  10. SPARK_CONF_DIR=/appcom/config/spark-config

LDAP 登录配置(可选)

注意" class="reference-link">注意

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

  1. #LDAP配置,默认Linkis只支持部署用户登录,如果需要支持多用户登录可以使用LDAP,需要配置以下参数:
  2. #LDAP_URL=ldap://localhost:1389/
  3. #LDAP_BASEDN=dc=webank,dc=com

JVM内存配置(可选)

微服务启动jvm内存配置,可以根据机器实际情况进行调整,如果机器内存资源较少,可以尝试调小至256/128M

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

安装目录配置(可选)

Linkis最终会被安装到此目录下,不配置默认是与当前安装包同一级目录下

  1. ##The decompression directory and the installation directory need to be inconsistent
  2. LINKIS_HOME=/appcom/Install/LinkisInstall

数据源服务开启(可选)

  1. #If you want to start metadata related microservices, you can set this export ENABLE_METADATA_MANAGE=true
  2. export ENABLE_METADATA_QUERY=true

无HDFS模式部署(可选 >1.1.2版本支持)

在没有HDFS 的环境中部署 Linkis 服务,以方便更轻量化的学习使用和调试。去HDFS模式部署不支持hive/spark/flink引擎等任务

修改 linkis-env.sh 文件,修改以下内容

  1. #使用[file://]路径模式代替[hdfs://]模式
  2. WORKSPACE_USER_ROOT_PATH=file:///tmp/linkis/
  3. HDFS_USER_ROOT_PATH=file:///tmp/linkis
  4. RESULT_SET_ROOT_PATH=file:///tmp/linkis
  5. export ENABLE_HDFS=false
  6. export ENABLE_HIVE=false
  7. export ENABLE_SPARK=false

3. 安装和启动

3.1 执行安装脚本:

install.sh脚本会询问您是否需要初始化数据库并导入元数据。如果选择初始化,会把数据库中的表数据清空重新初始化。

第一次安装必须选清空数据库

快速单机部署 - 图12注意
  • 如果出现报错,又不清楚具体是执行什么命令报错,可以加 -x 参数sh -x bin/install.sh,将shell脚本执行过程日志打印出来,方便定位问题
  • 权限问题:mkdir: cannot create directory ‘xxxx’: Permission denied,请确认部署用户是否拥有该路径的读写权限
  1. `Congratulations! You have installed Linkis 1.0.3 successfully, please use sh /data/Install/linkis/sbin/linkis-start-all.sh to start it!
  2. Your default account password is [hadoop/5e8e312b4]`

3.2 添加mysql驱动包

注意

因为mysql-connector-java驱动是GPL2.0协议,不满足Apache开源协议关于license的政策,因此从1.0.3版本开始,提供的Apache版本官方部署包,默认是没有mysql-connector-java-x.x.x.jar的依赖包(若是通过集成的全家桶物料包安装,则无需手动添加),安装部署时需要自行添加依赖到对应的lib包中。 可以在对应的目录下查看是否存在,如果不存在则需要添加

下载mysql驱动 以5.1.49版本为例:下载链接

拷贝mysql 驱动包至lib包下

  1. cp mysql-connector-java-5.1.49.jar {LINKIS_HOME}/lib/linkis-spring-cloud-services/linkis-mg-gateway/
  2. cp mysql-connector-java-5.1.49.jar {LINKIS_HOME}/lib/linkis-commons/public-module/

3.3 配置调整(可选)

以下操作,跟依赖的环境有关,根据实际情况,确定是否需要操作

3.3.1 kerberos认证

如果使用的hive集群开启了kerberos模式认证,修改配置${LINKIS_HOME}/conf/linkis.properties(<=1.1.3)文件

  1. #追加以下配置
  2. echo "wds.linkis.keytab.enable=true" >> linkis.properties

3.3.2 Yarn的认证

执行spark任务时,需要使用到yarn的ResourceManager,通过配置项YARN_RESTFUL_URL=http://xx.xx.xx.xx:8088 控制。 执行安装部署时,会将YARN_RESTFUL_URL=http://xx.xx.xx.xx:8088 信息更新到数据库表中 linkis_cg_rm_external_resource_provider中时候,默认访问yarn资源是不需权限验证的, 如果yarn的ResourceManager开启了密码权限验证,请安装部署后,修改数据库表 linkis_cg_rm_external_resource_provider 中生成的yarn数据信息, 详细可以参考

3.3.2 session

如果您是对Linkis的升级。同时部署DSS或者其他项目,但其它软件中引入的依赖linkis版本<1.1.1(主要看lib包中,所依赖的Linkis的linkis-module-x.x.x.jar包 <1.1.1),则需要修改位于${LINKIS_HOME}/conf/linkis.properties文件

  1. echo "wds.linkis.session.ticket.key=bdp-user-ticket-id" >> linkis.properties

3.4 启动服务

  1. sh sbin/linkis-start-all.sh

安装完成后,如果需要修改配置(因端口冲突或则某些配置有问题需要调整配置),可以重新执行安装,或则修改对应服务的配置${LINKIS_HOME}/conf/*properties文件后,重启对应的服务,如:sh sbin/linkis-daemon.sh start ps-publicservice

3.6 检查服务是否正常启动

访问eureka服务页面( 1.x.x版本默认会启动8个Linkis微服务,其中图下linkis-cg-engineconn服务为运行任务才会启动 Linkis1.0_Eureka

  1. LINKIS-CG-ENGINECONNMANAGER 引擎管理服务
  2. LINKIS-CG-ENGINEPLUGIN 引擎插件管理服务
  3. LINKIS-CG-ENTRANCE 计算治理入口服务
  4. LINKIS-CG-LINKISMANAGER 计算治理管理服务
  5. LINKIS-MG-EUREKA 微服务注册中心服务
  6. LINKIS-MG-GATEWAY 网关服务
  7. LINKIS-PS-CS 上下文服务
  8. LINKIS-PS-PUBLICSERVICE 公共服务

如果开启了数据源服务功能(默认未开启),会看到这两个服务

  1. LINKIS-PS-DATA-SOURCE-MANAGER
  2. LINKIS-PS-METADATAMANAGER

如果有服务未启动,可以在对应的log/${服务名}.log文件中查看详细异常日志。

web端是使用nginx作为静态资源服务器的,访问请求流程是: Linkis管理台请求->nginx ip:port->linkis-gateway ip:port-> 其他服务

4.1 下载前端安装包并解压

  1. tar -xvf apache-linkis-x.x.x-incubating-web-bin.tar.gz

4.2 修改配置config.sh

  1. #访问管理台的端口
  2. linkis_port="8188"
  3. #linkis-mg-gateway服务地址
  4. linkis_url="http://localhost:9020"

4.3 执行部署脚本

  1. # nginx 需要sudo权限进行安装
  2. sudo sh install.sh

安装后,linkis的nginx配置文件默认是 在/etc/nginx/conf.d/linkis.conf nginx的日志文件在 /var/log/nginx/access.log/var/log/nginx/error.log 生成的linkis管理台的nginx配置文件示例如下:

  1. server {
  2. listen 8188;# 访问端口 如果端口被占用,则需要修改
  3. server_name localhost;
  4. #charset koi8-r;
  5. #access_log /var/log/nginx/host.access.log main;
  6. location / {
  7. root /appcom/Install/linkis-web/dist; # 静态文件目录
  8. index index.html index.html;
  9. }
  10. location /ws {
  11. proxy_pass http://localhost:9020;#后端Linkis的地址
  12. proxy_http_version 1.1;
  13. proxy_set_header Upgrade $http_upgrade;
  14. proxy_set_header Connection upgrade;
  15. }
  16. location /api {
  17. proxy_pass http://localhost:9020; #后端Linkis的地址
  18. proxy_set_header Host $host;
  19. proxy_set_header X-Real-IP $remote_addr;
  20. proxy_set_header x_real_ipP $remote_addr;
  21. proxy_set_header remote_addr $remote_addr;
  22. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23. proxy_http_version 1.1;
  24. proxy_read_timeout 600s;
  25. proxy_send_timeout 12s;
  26. proxy_set_header Upgrade $http_upgrade;
  27. proxy_set_header Connection upgrade;
  28. }
  29. #error_page 404 /404.html;
  30. # redirect server error pages to the static page /50x.html
  31. #
  32. error_page 500 502 503 504 /50x.html;
  33. location = /50x.html {
  34. }
  35. }

如果需要修改端口或则静态资源目录等,请修改/etc/nginx/conf.d/linkis.conf 文件后执行 sudo nginx -s reload 命令

注意
  • 目前暂未集成visualis功能,安装过程中如果提示安装linkis/visualis失败,可以忽略
  • 查看nginx是否正常启动:检查nginx进程是否存在 ps -ef |grep nginx
  • 检查nginx的配置是否正确 sudo nginx -T
  • 如果端口被占用,可以修改nginx启动的服务端口/etc/nginx/conf.d/linkis.conflisten端口值,保存后重新启动
  • 如果访问管理台出现接口502,或则Unexpected token < in JSON at position 0异常,请确认linkis-mg-gateway是否正常启动,如果正常启动,查看nginx配置文件中配置的linkis-mg-gateway服务地址是否正确

4.4 登录管理台

浏览器登陆 http://xx.xx.xx.xx:8188/#/login 用户名/密码在{LINKIS_HOME}/conf/linkis-mg-gateway.properties中查看

  1. wds.linkis.admin.user= #用户
  2. wds.linkis.admin.password= #密码

管理台使用指引见

5. 验证基础功能

  1. #引擎的engineType 拼接的版本号,一定要与实际的相匹配,以下示例是默认的版本号
  2. #shell 引擎任务
  3. sh bin/linkis-cli -submitUser hadoop -engineType shell-1 -codeType shell -code "whoami"
  4. #hive引擎任务
  5. sh bin/linkis-cli -submitUser hadoop -engineType hive-2.3.3 -codeType hql -code "show tables"
  6. #spark引擎任务
  7. sh bin/linkis-cli -submitUser hadoop -engineType spark-2.4.3 -codeType sql -code "show tables"
  8. #python引擎任务
  9. sh bin/linkis-cli -submitUser hadoop -engineType python-python2 -codeType python -code 'print("hello, world!")'

如果验证失败,请参考【步骤6】进行排查

6 开发工具IDE(Scriptis)的安装(可选)

安装Scripti工具后,可以支持在web页面在线写SQL、Pyspark、HiveQL等脚本

详细指引见工具Scriptis的安装部署

7.1 引擎适配列表

请注意:Linkis的单独安装包默认只包含的:Python/Shell/Hive/Spark四个引擎,如果有其他的引擎(如jdbc/flink/sqoop等引擎)使用场景,可以手动安装,具体请参考 EngineConnPlugin引擎插件安装文档

本版本已适配的支持引擎列表如下:

7.2 查看部署的引擎

方式1: 查看引擎lib包目录

方式2: 查看linkis的数据库表

  1. select * from linkis_cg_engine_conn_plugin_bml_resources

8 常见异常问题排查指引

8.1. Yarn队列检查

登录后查看能否正常显示yarn队列资源(点击页面右下角按钮)(需要先安装前端)
正常如下图所示:
yarn-normal

若如果无法显示:可以按以下指引调整

8.1.1 查看yarn地址是否配置正确

数据库表 linkis_cg_rm_external_resource_provider ` 插入yarn数据信息

  1. INSERT INTO `linkis_cg_rm_external_resource_provider`
  2. (`resource_type`, `name`, `labels`, `config`) VALUES
  3. ('Yarn', 'sit', NULL,
  4. '{\r\n"rmWebAddress": "http://xx.xx.xx.xx:8088",\r\n"hadoopVersion": "2.7.2",\r\n"authorEnable":false,\r\n"user":"hadoop",\r\n"pwd":"123456"\r\n}'
  5. );
  6. config字段属性
  7. "rmWebAddress": "http://xx.xx.xx.xx:8088", #需要带上http以及端口
  8. "hadoopVersion": "2.7.2",
  9. "authorEnable":true, //是否需要认证 可以在浏览器中通过访问http://xx.xx.xx.xx:8088验证用户名和密码
  10. "user":"user",//用户名
  11. "pwd":"pwd"//密码

更新后,因为程序中有使用到缓存,想要立即生效,需要重启linkis-cg-linkismanager服务

  1. sh sbin/linkis-daemon.sh restart cg-linkismanager

8.1.2 查看yarn队列是否存在

异常信息:desc: queue ide is not exists in YARN.表明配置的yarn队列不存在,需要进行调整

修改方式:linkis管理台/参数配置>全局设置>yarn队列名[wds.linkis.rm.yarnqueue],修改一个可以使用的yarn队列,以使用的yarn 队列可以在 rmWebAddress:http://xx.xx.xx.xx:8088/cluster/scheduler 上查看到

查看可用的yarn队列

  1. #登陆到linkis的数据库
  2. select * from linkis_cg_engine_conn_plugin_bml_resources

正常如下:

查看引擎的物料记录是否存在(如果有更新,查看更新时间是否正确)。

  • 如果不存在或则未更新,先尝试手动刷新物料资源(详细见)。
  • 通过log/linkis-cg-engineplugin.log日志,查看物料失败的具体原因,很多时候可能是hdfs目录没有权限导致
  • 检查gateway地址配置是否正确conf/linkis.properties的配置项wds.linkis.gateway.url

引擎的物料资源默认上传到hdfs目录为 /apps-data/${deployUser}/bml

  1. hdfs dfs -ls /apps-data/hadoop/bml
  2. #如果没有该目录 请手动创建目录并授予${deployUser}读写权限
  3. hdfs dfs -mkdir /apps-data
  4. hdfs dfs -chown hadoop:hadoop /apps-data

8.3 登陆密码问题

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

8.4 版本兼容性问题

linkis默认支持的引擎,与dss兼容关系可以查看此文档

8.5 如何定位服务端异常日志

linkis的微服务比较多,若对系统不熟悉,有时候无法定位到具体哪个模块出现了异常,可以通过全局日志搜索方式

  1. tail -f log/* |grep -5n exception(或则tail -f log/* |grep -5n ERROR)
  2. less log/* |grep -5n exception(或则less log/* |grep -5n ERROR)

8.6 执行引擎任务的异常排查

step1:找到引擎的启动部署目录

  • 方式1:如果执行日志中有显示,可以在管理台上查看到 如下图:
    engine-log
  • 方式2:如果方式1中没有找到,可以通过找到conf/linkis-cg-engineconnmanager.properties配置的wds.linkis.engineconn.root.dir的参数,该值就是引擎启动部署的目录,子目录按执行引擎的用户进行了隔离
  1. # 如果不清楚taskid,可以按时间排序后进行选择 ll -rt /appcom/tmp/${执行的用户}/${日期}/${引擎}/
  2. cd /appcom/tmp/${执行的用户}/${日期}/${引擎}/${taskId}

目录大体如下

  1. conf -> /appcom/tmp/engineConnPublickDir/6a09d5fb-81dd-41af-a58b-9cb5d5d81b5a/v000002/conf #引擎的配置文件
  2. engineConnExec.sh #生成的引擎的启动脚本
  3. lib -> /appcom/tmp/engineConnPublickDir/45bf0e6b-0fa5-47da-9532-c2a9f3ec764d/v000003/lib #引擎依赖的包
  4. logs #引擎启动执行的相关日志

step2:查看引擎的日志

  1. less logs/stdout

step3:尝试手动执行脚本(如果需要)
可以通过尝试手动执行脚本,进行调试

  1. sh -x engineConnExec.sh

8.7 如何修改注册中心eureka的端口

有时候当eureka的端口被其他服务占用,无法使用默认的eureka端口的时候,需要对eureka端口进行修改,这里把对eureka端口的修改分为执行安装之前和执行安装之后两种情况。 1.执行安装之前修改注册中心eureka端口

  1. 1. 进入apache-linkis-x.x.x-incubating-bin.tar.gz的解压目录
  2. 2. 执行 vi deploy-config/linkis-env.sh
  3. 3. 修改EUREKA_PORT=20303EUREKA_PORT=端口号

2.执行安装之后修改注册中心eureka端口

  1. 1. 进入${linkis_home}/conf目录
  2. 2. 执行grep -r 20303 ./* ,查询结果如下所示:
  3. ./application-eureka.yml: port: 20303
  4. ./application-eureka.yml: defaultZone: http://ip:20303/eureka/
  5. ./application-linkis.yml: defaultZone: http://ip:20303/eureka/
  6. ./linkis-env.sh:EUREKA_PORT=20303
  7. ./linkis.properties:wds.linkis.eureka.defaultZone=http://ip:20303/eureka/

8.8 CDH适配版本的注意事项

CDH本身不是使用的官方标准的hive/spark包,进行适配时,最好修改linkis的源码中的hive/spark版本的依赖,进行重新编译部署。
具体可以参考CDH适配博文

【DSS1.0.0+Linkis1.0.2——CDH5环境中的试用记录】

【DSS1.0.0与Linkis1.0.2——Flink引擎相关问题汇总】

8.9 Http接口的调试

  • 方式1 可以开启免登陆模式指引
  • 方式2 postman中的,请求头带上登陆成功的cookie值 cookie值可以在浏览器端登陆成功后,获取
  1. Cookie: bdp-user-ticket-id=xxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 方式3 http请求头添加静态的Token令牌
    Token在conf/token.properties进行配置 如:TEST-AUTH=hadoop,root,user01

8.10 异常问题的排查流程

首先要按上述步骤检查服务/环境等是否都正常启动
按上述罗列的一些场景的方式进行基础问题的排查
QA文档中查找是否有解决方案,链接:
通过搜索issue中的内容,看是否能找到解决方案
issues
通过官网文档搜索,对于某些问题,可以通过官网搜索关键字进行查询,比如搜索”部署”相关。(如果出现404,请浏览器中刷新一下)

9. 相关的资料如何获取

linkis官网文档正在不断的完善,可以在本官网查看/关键字搜索相关文档。
相关博文链接