平台部署

StreamX 总体组件栈架构如下, 由 streamx-core 和 streamx-console 两个大的部分组成 , streamx-console 是一个非常重要的模块, 定位是一个综合实时数据平台流式数仓平台, 低代码 ( Low Code ), Flink & Spark 任务托管平台,可以较好的管理 Flink 任务,集成了项目编译、发布、参数配置、启动、savepoint,火焰图 ( flame graph ),Flink SQL,监控等诸多功能于一体,大大简化了 Flink 任务的日常操作和维护,融合了诸多最佳实践。其最终目标是打造成一个实时数仓,流批一体的一站式大数据解决方案

Streamx Archite

streamx-console 提供了开箱即用的安装包,安装之前对环境有些要求,具体要求如下:

环境要求

要求版本是否必须其他事项
操作系统Linux不支持Window系统
JAVA1.8+
Maven3+部署机器可选安装Maven(项目编译会用到)
Node.jsNodeJs相关环境
Flink1.12.0+版本必须是1.12.x或以上版本,scala版本必须是2.11
Hadoop2+可选,如果on yarn则需要hadoop环境,并且配置好相关环境变量
MySQL5.6+部署机器或者其他机器安装MySQL
Python2+可选,火焰图功能会用到Python
Perl5.16.3+可选,火焰图功能会用到Perl
注意

当前StreamX 1.2.1之前(包含)的版本,只支持scala 2.11,切忌使用flink时要检查对应的scala版本

目前 StreamX 对 Flink 的任务发布,同时支持 Flink on YARNFlink on Kubernetes 两种模式。

Hadoop

使用 Flink on YARN,需要部署的集群安装并配置 Hadoop的相关环境变量,如你是基于 CDH 安装的 hadoop 环境, 相关环境变量可以参考如下配置:

  1. export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop #hadoop 安装目录
  2. export HADOOP_CONF_DIR=/etc/hadoop/conf
  3. export HIVE_HOME=$HADOOP_HOME/../hive
  4. export HBASE_HOME=$HADOOP_HOME/../hbase
  5. export HADOOP_HDFS_HOME=$HADOOP_HOME/../hadoop-hdfs
  6. export HADOOP_MAPRED_HOME=$HADOOP_HOME/../hadoop-mapreduce
  7. export HADOOP_YARN_HOME=$HADOOP_HOME/../hadoop-yarn

Kubernetes

使用 Flink on Kubernetes,需要额外部署/或使用已经存在的 Kubernetes 集群,请参考条目: StreamX Flink-K8s 集成支持

编译 & 部署

你可以直接下载编译好的发行包(推荐),也可以选择手动编译安装,手动编译安装步骤如下:

环境要求

编译打包

streamx的编译在1.2.1前后发生了一些变化,我们分别看看具体变化和编译步骤:

1.2.1之前版本

streamx 1.2.1(不含1.2.1)之前的版本默认将前后端混合打包,最终生成一个dist包,开箱即用,以减少用户的学习和使用成本:

  1. git clone https://github.com/streamxhub/streamx.git
  2. cd streamx
  3. mvn clean install -DskipTests -Denv=prod
特别注意

注意参数 -Denv=prod

1.2.1之后版本

在streamx 1.2.1(包含)及之后的版本除了混合打包之外我们还提供了独立打包模式,供用户选择,这种方式打出来的包,更适合前后端分离项目的线上部署.

混合打包
  1. git clone https://github.com/streamxhub/streamx.git
  2. cd streamx
  3. mvn clean install -DskipTests -Pwebapp
特别注意

注意参数 -Pwebapp

独立打包
1. 后端编译
  1. git clone https://github.com/streamxhub/streamx.git
  2. cd streamx
  3. mvn clean install -DskipTests
2. 前端打包
  • 2.1 修改base api

在前后端独立编译部署的项目里,前端项目需要知道后端服务的base api,才能前后端协同工作. 因此在编译之前我们需要指定下后端服务的base api,修改 streamx-console-webapp/.env.production 里的VUE_APP_BASE_API即可

  1. vi streamx/streamx-console/streamx-console-webapp/.env.production
  • 2.2 编译
  1. git clone https://github.com/streamxhub/streamx.git
  2. cd streamx/streamx-console/streamx-console-webapp
  3. npm install
  4. npm run build
特别注意

注意每个不同版本编译的时候携带的参数

部署后端

安装完成之后就看到最终的工程文件,位于 streamx/streamx-console/streamx-console-service/target/streamx-console-service-${version}-bin.tar.gz,解包后安装目录如下

  1. .
  2. streamx-console-service-1.2.1
  3. ├── bin
  4. ├── flame-graph
  5. ├── └── *.py //火焰图相关功能脚本 ( 内部使用,用户无需关注 )
  6. ├── startup.sh //启动脚本
  7. ├── setclasspath.sh //java 环境变量相关的脚本 ( 内部使用,用户无需关注 )
  8. ├── shutdown.sh //停止脚本
  9. ├── yaml.sh //内部使用解析 yaml 参数的脚本 ( 内部使用,用户无需关注 )
  10. ├── conf
  11. ├── application.yaml //项目的配置文件 ( 注意不要改动名称 )
  12. ├── flink-application.template //flink 配置模板 ( 内部使用,用户无需关注 )
  13. ├── logback-spring.xml //logback
  14. └── ...
  15. ├── lib
  16. └── *.jar //项目的 jar 包
  17. ├── plugins
  18. ├── streamx-jvm-profiler-1.0.0.jar //jvm-profiler,火焰图相关功能 ( 内部使用,用户无需关注 )
  19. └── streamx-flink-sqlclient-1.0.0.jar //Flink SQl 提交相关功能 ( 内部使用,用户无需关注 )
  20. ├── script
  21. ├── final // 完整的ddl建表sql
  22. ├── upgrade // 每个版本升级部分的sql(只记录从上个版本到本次版本的sql变化)
  23. ├── logs //程序 log 目录
  24. ├── temp //内部使用到的临时路径,不要删除
初始化表结构

在 1.2.1之前的版本安装过程中不需要手动做数据初始化,只需要设置好数据库信息即可,会自动完成建表和数据初始化等一些列操作, 1.2.1(包含)之后的版本里不在自动建表和升级,需要用户手动执行ddl进行初始化操作,ddl说明如下:

  1. ├── script
  2. ├── final // 完整的ddl建表sql
  3. ├── upgrade // 每个版本升级部分的sql(只记录从上个版本到本次版本的sql变化)
修改配置

安装解包已完成,接下来准备数据相关的工作

新建数据库 streamx

确保在部署机可以连接的 mysql 里新建数据库 streamx

修改连接信息

进入到 conf 下,修改 conf/application.yml,找到 datasource 这一项,找到 mysql 的配置,修改成对应的信息即可,如下

  1. datasource:
  2. dynamic:
  3. # 是否开启 SQL 日志输出,生产环境建议关闭,有性能损耗
  4. p6spy: false
  5. hikari:
  6. connection-timeout: 30000
  7. max-lifetime: 1800000
  8. max-pool-size: 15
  9. min-idle: 5
  10. connection-test-query: select 1
  11. pool-name: HikariCP-DS-POOL
  12. # 配置默认数据源
  13. primary: primary
  14. datasource:
  15. # 数据源-1,名称为 primary
  16. primary:
  17. username: $user
  18. password: $password
  19. driver-class-name: com.mysql.cj.jdbc.Driver
  20. url: jdbc: mysql://$host:$port/streamx?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
修改workspace

进入到 conf 下,修改 conf/application.yml,找到 streamx 这一项,找到 workspace 的配置,修改成一个用户有权限的目录

  1. streamx:
  2. # HADOOP_USER_NAME 如果是on yarn模式( yarn-prejob | yarn-application | yarn-session)则需要配置 hadoop-user-name
  3. hadoop-user-name: hdfs
  4. # 本地的工作空间,用于存放项目源码,构建的目录等.
  5. workspace:
  6. local: /opt/streamx_workspace # 本地的一个工作空间目录(很重要),用户可自行更改目录,建议单独放到其他地方,用于存放项目源码,构建的目录等.
  7. remote: hdfs:///streamx # support hdfs:///streamx/ 、 /streamx 、hdfs://host:ip/streamx/
启动后端

进入到 bin 下直接执行 startup.sh 即可启动项目,默认端口是10000,如果没啥意外则会启动成功

  1. cd streamx-console-service-1.0.0/bin
  2. bash startup.sh

相关的日志会输出到streamx-console-service-1.0.0/logs/streamx.out

提示

前后端混合打包模式,只启动后端服务即可完成所有的部署, 打开浏览器 输入http://$host:10000 即可登录

部署前端

环境准备

全局安装 nodejs 和 pm2

  1. yum install -y nodejs
  2. npm install -g pm2
发布
1. 将dist copy到部署服务器

将streamx-console-webapp/dist 整个目录 copy至服务器的部署目录,如: /home/www/streamx

2. 将streamx.js文件copy到项目部署目录

将streamx/streamx-console/streamx-console-webapp/streamx.js copy 至 /home/www/streamx

3. 修改服务端口

用户可以自行指定前端服务的端口地址, 修改 /home/www/streamx/streamx.js文件, 找到 serverPort 修改即可,默认如下:

  1. const serverPort = 1000
  1. 启动服务
  1. pm2 start streamx.js

关于 pm2的更多使用请参考官网

登录系统

经过以上步骤,就算部署完成,可直接登录进入系统

StreamX Login

提示

默认密码: admin / streamx

系统配置

进入系统之后,第一件要做的事情就是修改系统配置,在菜单/StreamX/Setting 下,操作界面如下:

StreamX Settings

主要配置项分为以下几类

  • Flink Home
  • Maven Home
  • StreamX Env
  • Email

这里配置全局的 Flink Home,此处是系统唯一指定 Flink 环境的地方,会作用于所有的作业

提示

特别提示: 最低支持的 Flink 版本为 1.12.0, 之后的版本都支持

Maven Home

指定 maven Home, 目前暂不支持,下个版本实现

StreamX Env

  • StreamX Webapp address 这里配置 StreamX Console 的 web url 访问地址,主要火焰图功能会用到,具体任务会将收集到的信息通过此处暴露的 url 发送 http 请求到系统,进行收集展示
  • StreamX Console Workspace 配置系统的工作空间,用于存放项目源码,编译后的项目等(该配置为1.2.0之前的版本里的配置项)

Email

Alert Email 相关的配置是配置发送者邮件的信息,具体配置请查阅相关邮箱资料和文档进行配置