文章目录
前言
工作需要,开发需要使用linkis,于是尝试部署linkis。
本文档基本参考官方文档,主要是在按照官方文档部署的时候碰到一些小问题,所以记录一下完整的操作步骤,自己备份用。
linkis的版本为1.3.2。
以无HDFS模式部署(去HDFS模式部署不支持hive/spark/flink引擎等任务)。
一、首次安装准备事项
1.1 Linux服务器
硬件要求
安装linkis 微服务近10个,至少3G内存。每个微服务默认配置启动的jvm -Xmx 内存大小为 512M(内存不够的情况下,可以尝试调小至256/128M,内存足够情况下也可以调大)。
我这里直接部署了一个CentOS7.9的虚拟机,内存8G,磁盘200G。
更新一下全部服务,并重启一下服务器。
yum update -y
reboot
1.2 部署说明
安装linkis之前需要部署 yum、Java、MySQL、telnet、tar、sed、lsof、nginx。
部署路径为/opt/soft/
创建两个文件夹分别给linkis的前后端部署使用,并将安装包上传至对应文件夹当中。
mkdir /opt/soft
mkdir /opt/soft/apache-linkis-1.3.2-bin
mkdir /opt/soft/apache-linkis-1.3.2-web-bin
1.3 添加部署用户
部署用户: linkis核心进程的启动用户,同时此用户会默认作为管理员权限,部署过程中会生成对应的管理员登录密码,位于conf/linkis-mg-gateway.properties文件中 Linkis支持指定提交、执行的用户。linkis主要进程服务会通过sudo -u ${linkis-user} 切换到对应用户下,然后执行对应的引擎启动命令,所以引擎linkis-engine进程归属的用户是任务的执行者(因此部署用户需要有sudo权限,而且是免密的)。
以hadoop用户为例:
先查看系统中是否已经有 hadoop 用户,若已经存在,则直接授权即可,若不存在,先创建用户,再授权。
查看是否已存在 hadoop 用户
id hadoop
若不存在,则需要创建 hadoop用户组和hadoop 用户,并加入 hadoop 用户组
groupadd hadoop
useradd hadoop -g hadoop
vi /etc/sudoers
#免密配置
hadoop ALL=(ALL) NOPASSWD: NOPASSWD: ALL
1.4 安装jdk
这里使用的是jdk1.8.0_211。
将jdk-8u211-linux-x64.tar.gz上传至服务器,进行解压。
tar -zxvf jdk-8u211-linux-x64.tar.gz
mv jdk1.8.0_211 /usr/local/jdk1.8
rm -rf jdk-8u211-linux-x64.tar.gz
配置JAVA_HOME
vi /etc/profile
#在结尾处添加
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/LIB:$JRE_HOME/LIB:$CLASSPATH
export PATH=$JAVA_HOME:$JRE_HOME/bin:$PATH
#使配置生效
source /etc/profile
1.5 安装mysql
我在另一台服务器上已经使用docker部署了mysql了,所以这边只需要安装mysql命令即可。
#安装wget
yum install -y wget
#下载安装mysql8.0
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum localinstall mysql80-community-release-el7-3.noarch.rpm
wget https://dev.mysql.com/doc/mysql-apt-config.repo.latest.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install -y mysql
1.6 安装nginx
在部署linkis前端的时候,脚本会通过yum安装nginx,但其没考虑过yum没有安装成功的情况(CentOS7的yum源没有nginx安装包),所以这里自己安装一下nginx。
可以选择通过修改yum源安装nginx,优点是安装后的路径都是默认路径(比如配置文件路径为/etc/nginx/nginx.conf),后续可以直接使用。
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
也可以选择手动源码安装nginx。
从官网下载nginx最新版本。
#安装依赖文件
#安装gcc
yum install -y gcc-c++
#安装PCRE pcre-devel
yum install -y pcre pcre-devel
#安装zlib
yum install -y zlib zlib-devel
#安装Open SSL
yum install -y openssl openssl-devel
#下载nginx安装包
cd /opt/soft
wget http://nginx.org/download/nginx-1.24.0.tar.gz
#创建一个文件夹
mkdir -p /usr/local/nginx
cd /opt/soft
#解压缩包,直接tar -xvf nginx安装包所在路径
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
#编译
./configure --prefix=/usr/local/nginx
#部署
make && make install
这样部署下来的nginx的配置文件路径是/usr/local/nginx/conf/nginx.conf。
1.7 安装其他依赖
tar和sed是默认安装的,只需执行yum额外安装telnet、lsof即可。
yum install -y telnet
yum install -y lsof
二、配置修改
2.1 安装包准备
方式1:从官网下载地址下载对应的安装包(项目安装包和管理台安装包)。
方式2:根据Linkis 编译打包和前端管理台编译自行编译出项目安装包和管理台安装包。
上传安装包apache-linkis-1.3.2-bin.tar.gz后,进行解压安装包
mv apache-linkis-1.3.2-bin.tar.gz /opt/soft/apache-linkis-1.3.2-bin/
cd /opt/soft/apache-linkis-1.3.2-bin/
tar -zxvf apache-linkis-1.3.2-bin.tar.gz
解压后的目录结构如下:
-rw-r--r-- 1 hadoop hadoop 518192043 Jun 20 09:50 apache-linkis-1.3.2-bin.tar.gz
drwxrwxr-x 2 hadoop hadoop 4096 Jun 20 09:56 bin //执行环境检查和安装的脚本
drwxrwxr-x 2 hadoop hadoop 4096 Jun 20 09:56 deploy-config // 部署时依赖的DB等环境配置信息
drwxrwxr-x 4 hadoop hadoop 4096 Jun 20 09:56 docker
drwxrwxr-x 4 hadoop hadoop 4096 Jun 20 09:56 helm
-rwxrwxr-x 1 hadoop hadoop 84732 Jan 22 2020 LICENSE
drwxr-xr-x 2 hadoop hadoop 20480 Jun 20 09:56 licenses
drwxrwxr-x 7 hadoop hadoop 4096 Jun 20 09:56 linkis-package // 实际的软件包,包括lib/服务启动脚本工具/db的初始化脚本/微服务的配置文件等
-rwxrwxr-x 1 hadoop hadoop 119503 Jan 22 2020 NOTICE
-rw-r--r-- 1 hadoop hadoop 11959 Jan 22 2020 README_CN.md
-rw-r--r-- 1 hadoop hadoop 12587 Jan 22 2020 README.md
2.2 配置数据库信息
需提前在MySQL数据库创建对应的库和用户。
#在MySQL数据库中以root用户执行
create database linkis;
#创建linkis用户,密码可以设复杂点
create user 'linkis'@'%' identified by 'linkis123';
grant all privileges on `linkis`.* to 'linkis'@'%';
flush privileges;
编辑配置数据库信息文件
vi deploy-config/db.sh
# Linkis自身业务的数据库信息
MYSQL_HOST=xx.xx.xx.xx
MYSQL_PORT=3306
MYSQL_DB=linkis
MYSQL_USER=linkis
MYSQL_PASSWORD=linkis123
# 提供 Hive 元数据数据库的 DB 信息,如果不涉及hive引擎(或则只是简单试用),可以不配置
#主要是配合scriptis一起使用,如果不配置,会默认尝试通过$HIVE_CONF_DIR 中的配置文件获取
HIVE_META_URL="jdbc:mysql://10.10.10.10:3306/hive_meta_demo?useUnicode=true&characterEncoding=UTF-8"
HIVE_META_USER=demo # HiveMeta元数据库的用户
HIVE_META_PASSWORD=demo123 # HiveMeta元数据库的密码
2.3 配置基础变量
文件位于deploy-config/linkis-env.sh。
部署用户
deployUser=hadoop #执行部署的用户,为 1.3 步骤给中创建的用户
基础目录配置(可选)
# 指定用户使用的目录路径,一般用于存储用户的脚本文件和日志文件等,是用户的工作空间。 对应的配置文件配置项为 wds.linkis.filesystem.root.path(linkis.properties)
WORKSPACE_USER_ROOT_PATH=file:///tmp/linkis
# 结果集日志等文件路径,用于存储Job的结果集文件 wds.linkis.resultSet.store.path(linkis-cg-entrance.properties) //如果未配置 使用HDFS_USER_ROOT_PATH的配置
RESULT_SET_ROOT_PATH=file:///tmp/linkis
# 结果集日志等文件路径,用于存储Job的结果集文件 wds.linkis.filesystem.hdfs.root.path(linkis.properties)
HDFS_USER_ROOT_PATH=hdfs:///tmp/linkis
# 存放执行引擎的工作路径,需要部署用户有写权限的本地目录 wds.linkis.engineconn.root.dir(linkis-cg-engineconnmanager.properties)
ENGINECONN_ROOT_PATH=/appcom/tmp
JVM内存配置(可选)
微服务启动jvm内存配置,可以根据机器实际情况进行调整,如果机器内存资源较少,可以尝试调小至256/128M。
## java application default jvm memory
export SERVER_HEAP_SIZE="512M"
安装目录配置(可选)
Linkis最终会被安装到此目录下,不配置默认是与当前安装包同一级目录下。
##The decompression directory and the installation directory need to be inconsistent
LINKIS_HOME=/appcom/Install/LinkisInstall
无HDFS模式部署(可选 >1.1.2版本支持)
在没有HDFS 的环境中部署 Linkis 服务,以方便更轻量化的学习使用和调试。去HDFS模式部署不支持hive/spark/flink引擎等任务。
修改 linkis-env.sh 文件,修改以下内容:
#使用[file://]路径模式代替[hdfs://]模式
WORKSPACE_USER_ROOT_PATH=file:///tmp/linkis/
HDFS_USER_ROOT_PATH=file:///tmp/linkis
RESULT_SET_ROOT_PATH=file:///tmp/linkis
export ENABLE_HDFS=false
export ENABLE_HIVE=false
export ENABLE_SPARK=false
三、安装和启动
3.1 添加mysql驱动包
因为mysql-connector-java驱动是GPL2.0协议,不满足Apache开源协议关于license的政策,因此从1.0.3版本开始,提供的Apache版本官方部署包,默认是没有mysql-connector-java-x.x.x.jar的依赖包(若是通过集成的全家桶物料包安装,则无需手动添加),安装部署时需要自行添加依赖到对应的lib包中。 可以在对应的目录下查看是否存在,如果不存在则需要添加。
下载mysql驱动 以8.0.33版本为例:
拷贝mysql驱动包至lib包下。
cp mysql-connector-j-8.0.33.jar /opt/soft/apache-linkis-1.3.2-bin/linkis-package/lib/linkis-spring-cloud-services/linkis-mg-gateway/
cp mysql-connector-j-8.0.33.jar /opt/soft/apache-linkis-1.3.2-bin/linkis-package/lib/linkis-commons/public-module/
3.2 执行安装脚本
cd /opt/soft/apache-linkis-1.3.2-bin
sh bin/install.sh
install.sh脚本会询问您是否需要初始化数据库并导入元数据。如果选择初始化,会把数据库中的表数据清空重新初始化。
第一次安装必须选清空数据库。
如果出现报错,又不清楚具体是执行什么命令报错,可以加 -x 参数sh -x bin/install.sh,将shell脚本执行过程日志打印出来,方便定位问题。 权限问题:mkdir: cannot create directory ‘xxxx’: Permission denied,请确认部署用户是否拥有该路径的读写权限。
执行成功提示如下:
`Congratulations! You have installed Linkis 1.0.3 successfully, please use sh /data/Install/linkis/sbin/linkis-start-all.sh to start it!
Your default account password is [hadoop/5e8e312b4]`
3.3 启动服务
sh sbin/linkis-start-all.sh
3.4 安装后配置的修改
安装完成后,如果需要修改配置(因端口冲突或则某些配置有问题需要调整配置),可以重新执行安装,或则修改对应服务的配置${LINKIS_HOME}/conf/*properties文件后,重启对应的服务,如:sh sbin/linkis-daemon.sh start ps-publicservice。
3.5 检查服务是否正常启动
访问eureka服务页面(http://eurekaip:20303), 默认会启动6个 Linkis 微服务,其中下图linkis-cg-engineconn服务为运行任务才会启动。
LINKIS-CG-ENGINECONNMANAGER 引擎管理服务
LINKIS-CG-ENTRANCE 计算治理入口服务
LINKIS-CG-LINKISMANAGER 计算治理管理服务
LINKIS-MG-EUREKA 微服务注册中心服务
LINKIS-MG-GATEWAY 网关服务
LINKIS-PS-PUBLICSERVICE 公共服务
注意:在 Linkis 1.3.1 中已将 LINKIS-PS-CS、LINKIS-PS-DATA-SOURCE-MANAGER、LINKIS-PS-METADATAMANAGER服务合并到LINKIS-PS-PUBLICSERVICE,将LINKIS-CG-ENGINEPLUGIN服务合并到LINKIS-CG-LINKISMANAGER。
如果有服务未启动,可以在对应的log/${服务名}.log文件中查看详细异常日志。
四、安装web前端
web端是使用nginx作为静态资源服务器的,访问请求流程是: Linkis管理台请求->nginx ip:port->linkis-gateway ip:port-> 其他服务 。
4.1 下载前端安装包并解压
mv apache-linkis-1.3.2-web-bin.tar.gz /opt/soft/apache-linkis-1.3.2-web-bin/
cd /opt/soft/apache-linkis-1.3.2-web-bin/
tar -xvf apache-linkis-1.3.2-web-bin.tar.gz
4.2 修改配置config.sh
#访问管理台的端口
linkis_port="8188"
#linkis-mg-gateway服务地址
linkis_url="http://localhost:9020"
4.3 执行部署脚本
cd /opt/soft/apache-linkis-1.3.2-web-bin/
sh install.sh
安装后,linkis的nginx配置文件默认是在 /etc/nginx/conf.d/linkis.conf 。
nginx的日志文件在 /var/log/nginx/access.log 和/var/log/nginx/error.log 。
生成的linkis管理台的nginx配置文件示例如下(如果是源码安装的话就把下面的配置手动添加到nginx的配置文件nginx.conf中的对应位置即可):
server {
listen 8188;# 访问端口 如果端口被占用,则需要修改
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /opt/soft/apache-linkis-1.3.2-web-bin/dist; # 静态文件目录
index index.html index.html;
}
location /ws {
proxy_pass http://localhost:9001;#后端Linkis的地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
location /api {
proxy_pass http://localhost: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;
}
}
如果需要修改端口或则静态资源目录等,请修改nginx的配置文件后执行 nginx -s reload 命令。
4.4 登录管理台
浏览器登陆 http://xx.xx.xx.xx:8188/#/login 用户名/密码在{LINKIS_HOME}/conf/linkis-mg-gateway.properties中查看。
wds.linkis.admin.user= #用户
wds.linkis.admin.password= #密码
总结
本文简单介绍了以无HDFS模式部署linkis 1.3.2版本。
基本照搬官方文档,部分自己出问题的地方进行了修改,仅作自己备份。
我自己照官方文档进行操作的时候出现的问题主要是下面几点:
1.执行安装脚本的时候提示需要依赖mysql,于是检查了一下安装脚本,在checkEnv.sh中有明确表示需要安装yum、java、mysql、telnet、tar、sed、lsof。
2.执行前端安装脚本的时候,nginx是通过yum安装的,但是会安装失败,CentOS7的yum源中没有nginx,需要自己更换一下yum源。
如果通过源码安装,则需要手动改一下nginx配置文件中的端口和跳转路径,参考上面4.3的配置即可。
参考文档: