平台部署
StreamX 总体组件栈架构如下, 由 streamx-core 和 streamx-console 两个大的部分组成 , streamx-console 是一个非常重要的模块, 定位是一个综合实时数据平台,流式数仓平台, 低代码 ( Low Code ), Flink & Spark 任务托管平台,可以较好的管理 Flink 任务,集成了项目编译、发布、参数配置、启动、savepoint,火焰图 ( flame graph ),Flink SQL,监控等诸多功能于一体,大大简化了 Flink 任务的日常操作和维护,融合了诸多最佳实践。其最终目标是打造成一个实时数仓,流批一体的一站式大数据解决方案
streamx-console 提供了开箱即用的安装包,安装之前对环境有些要求,具体要求如下:
环境要求
要求 | 版本 | 是否必须 | 其他事项 |
操作系统 | Linux | 不支持Window系统 | |
JAVA | 1.8+ | ||
Maven | 3+ | 部署机器可选安装Maven(项目编译会用到) | |
Node.js | NodeJs相关环境 | ||
Flink | 1.12.0+ | 版本必须是1.12.x或以上版本,scala版本必须是2.11 | |
Hadoop | 2+ | 可选,如果on yarn则需要hadoop环境,并且配置好相关环境变量 | |
MySQL | 5.6+ | 部署机器或者其他机器安装MySQL | |
Python | 2+ | 可选,火焰图功能会用到Python | |
Perl | 5.16.3+ | 可选,火焰图功能会用到Perl |
注意
当前StreamX 1.2.1之前(包含)的版本,只支持scala 2.11
,切忌使用flink
时要检查对应的scala
版本
目前 StreamX 对 Flink 的任务发布,同时支持 Flink on YARN
和 Flink on Kubernetes
两种模式。
Hadoop
使用 Flink on YARN
,需要部署的集群安装并配置 Hadoop的相关环境变量,如你是基于 CDH 安装的 hadoop 环境, 相关环境变量可以参考如下配置:
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop #hadoop 安装目录
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HIVE_HOME=$HADOOP_HOME/../hive
export HBASE_HOME=$HADOOP_HOME/../hbase
export HADOOP_HDFS_HOME=$HADOOP_HOME/../hadoop-hdfs
export HADOOP_MAPRED_HOME=$HADOOP_HOME/../hadoop-mapreduce
export HADOOP_YARN_HOME=$HADOOP_HOME/../hadoop-yarn
Kubernetes
使用 Flink on Kubernetes
,需要额外部署/或使用已经存在的 Kubernetes 集群,请参考条目: StreamX Flink-K8s 集成支持。
编译 & 部署
你可以直接下载编译好的发行包(推荐),也可以选择手动编译安装,手动编译安装步骤如下:
环境要求
- Maven 3.6+
- npm 7.11.2 ( https://nodejs.org/en/ )
- JDK 1.8+
编译打包
streamx的编译在1.2.1前后发生了一些变化,我们分别看看具体变化和编译步骤:
1.2.1之前版本
streamx 1.2.1(不含1.2.1)之前的版本默认将前后端混合打包,最终生成一个dist包,开箱即用,以减少用户的学习和使用成本:
git clone https://github.com/streamxhub/streamx.git
cd streamx
mvn clean install -DskipTests -Denv=prod
特别注意
注意参数 -Denv=prod
1.2.1之后版本
在streamx 1.2.1(包含)及之后的版本除了混合打包之外我们还提供了独立打包模式,供用户选择,这种方式打出来的包,更适合前后端分离项目的线上部署.
混合打包
git clone https://github.com/streamxhub/streamx.git
cd streamx
mvn clean install -DskipTests -Pwebapp
特别注意
注意参数 -Pwebapp
独立打包
1. 后端编译
git clone https://github.com/streamxhub/streamx.git
cd streamx
mvn clean install -DskipTests
2. 前端打包
- 2.1 修改base api
在前后端独立编译部署的项目里,前端项目需要知道后端服务的base api,才能前后端协同工作. 因此在编译之前我们需要指定下后端服务的base api,修改 streamx-console-webapp/.env.production 里的VUE_APP_BASE_API
即可
vi streamx/streamx-console/streamx-console-webapp/.env.production
- 2.2 编译
git clone https://github.com/streamxhub/streamx.git
cd streamx/streamx-console/streamx-console-webapp
npm install
npm run build
特别注意
注意每个不同版本编译的时候携带的参数
部署后端
安装完成之后就看到最终的工程文件,位于 streamx/streamx-console/streamx-console-service/target/streamx-console-service-${version}-bin.tar.gz
,解包后安装目录如下
.
streamx-console-service-1.2.1
├── bin
│ ├── flame-graph
│ ├── └── *.py //火焰图相关功能脚本 ( 内部使用,用户无需关注 )
│ ├── startup.sh //启动脚本
│ ├── setclasspath.sh //java 环境变量相关的脚本 ( 内部使用,用户无需关注 )
│ ├── shutdown.sh //停止脚本
│ ├── yaml.sh //内部使用解析 yaml 参数的脚本 ( 内部使用,用户无需关注 )
├── conf
│ ├── application.yaml //项目的配置文件 ( 注意不要改动名称 )
│ ├── flink-application.template //flink 配置模板 ( 内部使用,用户无需关注 )
│ ├── logback-spring.xml //logback
│ └── ...
├── lib
│ └── *.jar //项目的 jar 包
├── plugins
│ ├── streamx-jvm-profiler-1.0.0.jar //jvm-profiler,火焰图相关功能 ( 内部使用,用户无需关注 )
│ └── streamx-flink-sqlclient-1.0.0.jar //Flink SQl 提交相关功能 ( 内部使用,用户无需关注 )
├── script
│ ├── final // 完整的ddl建表sql
│ ├── upgrade // 每个版本升级部分的sql(只记录从上个版本到本次版本的sql变化)
├── logs //程序 log 目录
├── temp //内部使用到的临时路径,不要删除
初始化表结构
在 1.2.1之前的版本安装过程中不需要手动做数据初始化,只需要设置好数据库信息即可,会自动完成建表和数据初始化等一些列操作, 1.2.1(包含)之后的版本里不在自动建表和升级,需要用户手动执行ddl进行初始化操作,ddl说明如下:
├── script
│ ├── final // 完整的ddl建表sql
│ ├── upgrade // 每个版本升级部分的sql(只记录从上个版本到本次版本的sql变化)
修改配置
安装解包已完成,接下来准备数据相关的工作
新建数据库 streamx
确保在部署机可以连接的 mysql 里新建数据库 streamx
修改连接信息
进入到 conf
下,修改 conf/application.yml
,找到 datasource 这一项,找到 mysql 的配置,修改成对应的信息即可,如下
datasource:
dynamic:
# 是否开启 SQL 日志输出,生产环境建议关闭,有性能损耗
p6spy: false
hikari:
connection-timeout: 30000
max-lifetime: 1800000
max-pool-size: 15
min-idle: 5
connection-test-query: select 1
pool-name: HikariCP-DS-POOL
# 配置默认数据源
primary: primary
datasource:
# 数据源-1,名称为 primary
primary:
username: $user
password: $password
driver-class-name: com.mysql.cj.jdbc.Driver
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 的配置,修改成一个用户有权限的目录
streamx:
# HADOOP_USER_NAME 如果是on yarn模式( yarn-prejob | yarn-application | yarn-session)则需要配置 hadoop-user-name
hadoop-user-name: hdfs
# 本地的工作空间,用于存放项目源码,构建的目录等.
workspace:
local: /opt/streamx_workspace # 本地的一个工作空间目录(很重要),用户可自行更改目录,建议单独放到其他地方,用于存放项目源码,构建的目录等.
remote: hdfs:///streamx # support hdfs:///streamx/ 、 /streamx 、hdfs://host:ip/streamx/
启动后端
进入到 bin
下直接执行 startup.sh 即可启动项目,默认端口是10000,如果没啥意外则会启动成功
cd streamx-console-service-1.0.0/bin
bash startup.sh
相关的日志会输出到streamx-console-service-1.0.0/logs/streamx.out 里
提示
前后端混合打包模式,只启动后端服务即可完成所有的部署, 打开浏览器 输入http://$host:10000 即可登录
部署前端
环境准备
全局安装 nodejs 和 pm2
yum install -y nodejs
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
修改即可,默认如下:
const serverPort = 1000
- 启动服务
pm2 start streamx.js
关于 pm2的更多使用请参考官网
登录系统
经过以上步骤,就算部署完成,可直接登录进入系统
提示
默认密码: admin / streamx
系统配置
进入系统之后,第一件要做的事情就是修改系统配置,在菜单/StreamX/Setting 下,操作界面如下:
主要配置项分为以下几类
- Flink Home
- Maven Home
- StreamX Env
Flink Home
这里配置全局的 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之前的版本里的配置项)
Alert Email 相关的配置是配置发送者邮件的信息,具体配置请查阅相关邮箱资料和文档进行配置