1. 环境准备及编译

July 5, 2022 · View on GitHub

Visualis编译部署文档

1. 环境准备及编译

1.1. 依赖环境准备

依赖的组件是否必装安装直通车
MySQL (5.5+)必装如何安装mysql
JDK (1.8.0_141)必装如何安装JDK
Hadoop(2.7.2,Hadoop 其他版本需自行编译 Linkis)必装Hadoop单机部署Hadoop分布式部署
Spark(2.4.3,Spark 其他版本需自行编译 Linkis)必装Spark快速安装
DSS1.1.0必装如何安装DSS
Linkis1.1.1(大于等于该版本)必装如何安装Linkis
Nginx必装如何安装 Nginx

1.2. 创建 Linux 用户

    请保持Visualis的部署用户与Linkis的部署用户一致,采用hadoop用户部署。

1.3. 底层依赖组件检查

    在安装linkis后,请确保DSS1.1.0与Linkis1.1.1 基本可用,可在 DSS 前端界面执行 SparkQL 脚本,可正常创建并执行 DSS 工作流。

1.4. 下载源码包及编译后端

    Visualis源码安装时,需要下载对应的源码包进行编译,目前Visualis在依赖的Linkis1.1.1版本已经上传到Maven中央仓库,只需Maven配置正常即可拉取相关依赖,DSS 1.1.0版本正在发布版本,并未上传至Maven中央仓库,需要拉取DSS仓库的1.1.0进行编译,并把依赖安装到本地。

# 1. 下载源码
git clone https://github.com/WeBankFinTech/Visualis.git

# 2. 切换到1.0.0分支
git checkout 1.0.0

# 3. 执行编译打包
cd Visualis
mvn -N install
mvn clean package -DskipTests=true

1.5. 编译前端

    Visualis是一个前后端分离项目,前端文件可以单独编译打包,在电脑上需要安装npm工具,可以查看npm安装,在windowns机器上,可以打开Idea工具的Terminal界面,或者使用Git bash完成前端编译。

# 查看npm是否安装完成
npm -v
>> 8.1.0

cd webapp # 进入前端文件路径
npm i # 下载前端依赖
npm run build # 编译前端包

# 在webapp目录下会生成一个build文件目录,该目录即编译完成的前端包文件

# 在windows环境,压缩build目录为一个zip文件即可

2. 安装部署

2.1. 安装后端

    Visualis使用assembly作为打包插件,在编译完成后,进入到Visualis/assembly/target目录下,可以找到编译完成后的visualis-server.zip包。

# 1. 解压安装包
unzip visualis-server.zip
cd visualis-server

    解压完成visualis编译包后,进入目录可以看到以下文件目录。

visualis-server
    --- bin   # 服务启停脚本
    --- conf  # 服务配置目录
    --- davinvi-ui    # 前端模板,有无并不影响使用
    --- lib   # 服务jar包存放位置
    --- logs  # 日志目录

    在需要部署的服务器上(也可以是DSS部署的服务器),上传该visualis-server.zip包,在需要部署的路径上,解压即可完成Visualis安装。

2.2. 初始化数据库

    Visualis的编译包,解压即为安装,并未去执行相关的SQL文件,所以在正常安装步骤中,需要建立一个visualis的数据库,并执行visualis的相关建表语句。     相关建表语句可以在源码中找到,进入到源码的根目录,找到db文件夹,连接到对应的数据库后,执行以下SQL文件,建立Visualis使用时需用到的表。

# 在源码包db目录中找到对应的sql文件

# 连接visualis数据库
mysql -h 127.0.0.1 -u hadoop -d visualis -P3306 -p

source ${visualis_home}/davinci.sql
source ${visualis_home}/ddl.sql

# 其中davinci.sql是visualis需要使用到的davinci的表
# ddl.sql是visualis额外依赖的表

2.3. 字体库安装

    对于邮件报表而言,需要渲染中文字体,其中Visualis截图功能依赖中文字体,在部署的机器上/usr/share/fonts目录下。新建一个visualis文件夹,上传Visualis源码包中ext目录下的pf.ttf到该visualis文件夹下,执行fc-cache –fv命令刷新字体缓存即可。

# 需要切换到root用户
sudo su
cd /usr/share/fonts
mkdir visualis

# 上传pf.ttf中文字体库
rz -ybe

# 刷新字体库缓存
fc-cache –fv

    在使用visualis时,调用预览功能或在工作流中执行Display和Dashboard时,如果提示报错:error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory,是由于部署visualis的机器缺少相关依赖导致报错,执行sudo yum -y install fontconfig-devel安装依赖。

2.4 安装前端

    为了更好的说明前端配置,首先给出nginx的配置,visualis的nginx的前端配置和说明:

server {
    
    listen  8088;# a. 访问端口
    server_name  localhost;

  location /dss/linkis { # b. linkis管理台的静态文件目录
    root   /data/dss_linkis/web;
    autoindex on;
  }
  
  location /dss/visualis { # c. 前端访问路径,需要手动创建
    root   /data/dss_linkis/web; # d. visualis前端静态资源文件目录,可自由指定
    autoindex off;
  }

  location / { # e. dss静态文件目录
    root   /data/dss_linkis/web/dist;
    index  index.html index.html;
  }

  location /ws {
    proxy_pass http://127.0.0.1:9001; # f. linkis gateway地址
    # ...
  }

  location /api {
    proxy_pass http://127.0.0.1:9001; # g. linkis gateway地址
    # ...
  }
}

    Visualis当前使用前后端分离的部署方案,即前后端分别打包部署,完成前端编译后,把前端包(前端资源文件)放置在nginx配置的前端资源文件目录下 (即上述配置 c和d小项)。

# 配置静态资源根路径(用于配置nginx的root参数,即d小项)
cd /data/dss_linkis/web

# 在上一步/data/dss_linkis/web目录下,配置前端访问url路径地址(即c小项,没有则需要创建)
cd dss/visualis

# 上传Visualis前端包
rz -ybe build.zip

unzip build.zip # 解压前端包

cd build # 进入到解压路径

mv * ./../ # 把静态资源文件移动到c小项dss/visualis路径下

    前端部署配置后,可以重启nginx或者刷新nginx配置使得上述配置生效sudo nginx -s reload。

2.5. 修改配置

2.5.1. 修改application.yml

    在配置application.yml文件中,必须要配置的有1、2、3配置项,其它配置可采用默认值,其中第1项中,需要配置一些部署IP和端口信息,第2项需要配置eureka的信息,第3项中只需要配置数据库的链接信息。(visualis的库可以和dss同库,也可以不同,需部署用户自行抉择)

# ##################################
# 1. Visualis Service configuration
# ##################################
server:
  protocol: http
  address: 127.0.0.1 # server ip address(服务部署的机器IP)
  port:  8008 # server port(visualis服务进程端口)
  url: http://127.0.0.1:8088/dss/visualis # frontend index page full path(前端访问visualis的完整路径)
  access:
    address: 127.0.0.1 # frontend address(前端部署IP)
    port: 8088 # frontend port(前端访问端口)


# ##################################
# 2. eureka configuration
# ##################################
eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:20303/eureka/ # Configuration required
  instance:
    metadata-map:
      test: wedatasphere
management:
  endpoints:
    web:
      exposure:
        include: refresh,info


# ##################################
# 3. Spring configuration
# ##################################
spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: visualis-dev
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/visualis?characterEncoding=UTF-8&allowMultiQueries=true # Configuration required
    username: hadoop
    password: hadoop

# 其它参数保持默认,如果不需要定制化修改,采用默认参数即可

2.5.2. 修改linkis.properties

# ##################################
# 1. need configuration
#    需要配置
# ##################################
wds.linkis.gateway.url=http://127.0.0.1:9001

# 其它可以使用默认参数
# 省略配置

    如果部署的hadoop集群开启了Kerberos,需要在visualis的配置文件linkis.properties文件中开启Kerberos,加入配置项:

wds.linkis.keytab.enable=true

3. 启动应用

    在配置和前端包编译完成后,可以尝试启动服务。Visualis目前和DSS集成,使用了DSS的登录及权限体系,使用前需部署完成DSS1.1.0版本,可以参考DSS1.1.0一键安装部署。

3.1. 执行启动脚本

    进入Visualis的安装目录,找到bin文件夹,在此文件夹下执行一下命令。

sh ./start-server.sh

备注:如果启动服务时,报启动脚本的换行符无法识别,需要在服务器上对脚本进行编码转换使用:dos2unix xxx.sh 命令进行转换

3.2. 确认应用启动成功

    打开Eureka页面,在注册的服务列表中,找到visualis服务的实例,即可认为服务启动成功。同时也可以查看visualis的服务启动日志,如果没有报错,即服务顺利启动。

# 查看服务启动日志
less logs/linkis.out

    查看Eureka页面,查看服务是否注册成功。

4. AppConn安装

    Visualis服务部署后,需要和DSS应用商店和工作流打通,需要在DSS侧安装对应的AppConn,可参考VisualisAppConn安装

5. 有关域名访问DSS时Visualis的配置说明(可选)

    在实际生产中,访问DSS一般使用域名进行访问,读者阅读visualis安装部署文档和appconn的部署文档时会发现,visualis的配置中出现几处前端配置,这些前端配置影响预览功能和邮件报表功能。     如果使用域名时,需要注意以下配置:

  1. AppConn安装时,指定visualis appconn的访问ip和端口时,可以先写入一个模拟值,待安装完成后,然后修改dss_appconn_instance表的url字段为域名值,类似: http://dss.bdp.com/ (注意后面的斜杠/,配置时不能遗漏)。
  2. Visualis服务的配置文件application.yml中,指定的前端ip和端口,需要指定为前端nginx服务器的ip和nginx配置的visualis端口。

6. 日志配置(可选)

    在实际的使用场景中,依赖于linkis.out日志输出场景比较不符合规范,日志文件不回滚,长时间运行容易造成生产服务器磁盘容量告警,从而带来生产问题,目前我们可以通过修改日志配置,来优化日志打印,日志配置可以参考如下修改:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error" monitorInterval="30">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36} %L %M - %msg%xEx%n"/>
        </Console>
        <RollingFile name="RollingFile" fileName="/data/logs/visualis/visualis.log"
                     filePattern="/data/logs/visualis/$${date:yyyy-MM}/visualis-log-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="100MB"/>
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </appenders>
    <loggers>
        <root level="INFO">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/> # 去掉该配置即会取消掉linkis.out日志输出。
        </root>
    </loggers>
</configuration>