摘要:本文介紹了 StreamX 的部署安裝,內(nèi)容主要分為以下幾個(gè)部分:
- 系統(tǒng)架構(gòu)
- 部署環(huán)境要求
- 平臺(tái)部署
- 系統(tǒng)配置
- 開(kāi)發(fā)部署應(yīng)用
- 結(jié)束語(yǔ)
1. 系統(tǒng)架構(gòu)
StreamX 的初衷是讓流處理更簡(jiǎn)單, 可能你還沒(méi)遇到她, 也許第一眼就命中注定的戀愛(ài)了, 來(lái), 讓我們一塊走進(jìn) StreamX 的世界! 這會(huì)是一個(gè)系列的文章, 為你詳細(xì)講述關(guān)于 StreamX 的故事。
StreamX 總體組件棧架構(gòu)如下, 由 streamx-core 和 streamx-console 兩個(gè)大的部分組成 , streamx-console 是一個(gè)非常重要的模塊, 定位是一個(gè) 綜合實(shí)時(shí)數(shù)據(jù)平臺(tái),流式數(shù)倉(cāng)平臺(tái), 低代碼 ( Low Code ), Flink & Spark 任務(wù)托管平臺(tái),可以較好的管理 Flink 任務(wù),集成了項(xiàng)目編譯、發(fā)布、參數(shù)配置、啟動(dòng)、savepoint ,火焰圖 ( flame graph ),F(xiàn)link SQL,監(jiān)控等諸多功能于一體,大大簡(jiǎn)化了 Flink 任務(wù)的日常操作和維護(hù),融合了諸多最佳實(shí)踐。其最終目標(biāo)是打造成一個(gè)實(shí)時(shí)數(shù)倉(cāng),流批一體的一站式大數(shù)據(jù)解決方案。

2. 部署環(huán)境要求
streamx-console提供了開(kāi)箱即用的安裝包,安裝之前對(duì)環(huán)境有些要求,具體要求如下:
環(huán)境要求

Linux
選擇 centos 7.5
JDK
選擇1.8
Maven
選擇3.8.5
cd /opt/software
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz --no-check-certificate
tar -xzvf apache-maven-3.8.5-bin.tar.gz -C /opt/module
sudo ln -s /opt/module/apache-maven-3.8.5/bin/mvn /usr/bin/mvn
Node.js
前端部分采用vue開(kāi)發(fā),需要nodejs環(huán)境,下載安裝最新的nodejs即可。
sudo yum install -y nodejs
查看nodejs版本。
node --versionv16.13.2
MySQL
選擇5.7.16
Flink
選擇 1.13.6并且需要配置FLINK_HOME環(huán)境變量:
export FLINK_HOME=/opt/module/flink-1.13.6
Hadoop
這里使用的是 Flink on Yarn, 需要部署的集群安裝并配置 Hadoop的相關(guān)環(huán)境變量,如你是基于 CDH 安裝的 Hadoop 環(huán)境,相關(guān)環(huán)境變量可以參考如下配置:
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
特別注意: 如果是 Hadoop 3.x 系列, 除了正常的配置外, 需要在 core-site.xml 中特別指定下以下配置:
<property>
<name>dfs.client.datanode-restart.timeout</name>
<value>30</value>
</property>
3. 平臺(tái)部署
本次基于 1.2.2 穩(wěn)定版本進(jìn)行安裝部署,如果是本地編譯部署安裝的話(huà), 請(qǐng)看下面的操作演示:
也可以直接下載發(fā)行包進(jìn)行安裝部署, 此方式也是推薦的安裝部署方式, 簡(jiǎn)單, 快捷。
cd /opt/software
wget https://github.com/streamxhub/streamx/releases/download/v1.2.2/streamx-console-service-1.2.2-bin.tar.gz
tar -zxvf streamx-console-service-1.2.2-bin.tar.gz -C /opt/module
- 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE `streamx` CHARACTER SET utf8 COLLATE utf8_general_ci;
- 初始化表
use streamx;
source /opt/module/streamx-console-service-1.2.2/script/final.sql
- 配置連接信息
進(jìn)入到 conf 下,修改 application.yml, 找到 datasource 這一項(xiàng),找到 mysql 的配置,修改成對(duì)應(yīng)的信息即可,如下:
datasource:
dynamic:
# 是否開(kāi)啟 SQL 日志輸出,生產(chǎn)環(huán)境建議關(guān)閉,有性能損耗
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
# 配置默認(rèn)數(shù)據(jù)源
primary: primary
datasource:
# 數(shù)據(jù)源-1,名稱(chēng)為 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
同樣進(jìn)入到 conf 下,修改 application.yml,找到 streamx 這一項(xiàng),找到 workspace 的配置,修改成一個(gè)用戶(hù)有權(quán)限的目錄。
streamx:
# HADOOP_USER_NAME 如果是on yarn模式( yarn-prejob | yarn-application | yarn-session)則需要配置 hadoop-user-name
hadoop-user-name: hdfs
# 本地的工作空間,用于存放項(xiàng)目源碼,構(gòu)建的目錄等.
workspace:
local: /opt/streamx_workspace # 本地的一個(gè)工作空間目錄(很重要),用戶(hù)可自行更改目錄,建議單獨(dú)放到其他地方,用于存放項(xiàng)目源碼,構(gòu)建的目錄等.
remote: hdfs:///streamx # support hdfs:///streamx/ 、 /streamx 、hdfs://host:ip/streamx/
注意:其中,數(shù)據(jù)庫(kù)用戶(hù)名密碼及JDBC連接URL需要修改為自己數(shù)據(jù)庫(kù)的相關(guān)屬性,hadoop-user-name及workspace需要根據(jù)自己的實(shí)際情況進(jìn)行修改。其他情況可以暫時(shí)使用默認(rèn)配置。
- 啟動(dòng)服務(wù)
進(jìn)入到 bin 下直接執(zhí)行 startup.sh 即可啟動(dòng)項(xiàng)目,默認(rèn)端口是10000,如果沒(méi)啥意外則會(huì)啟動(dòng)成功,相關(guān)的日志會(huì)輸出到streamx-console-service-1.2.2/logs/streamx.out 里。
/opt/module/streamx-console-service-1.2.2/bin/startup.sh
啟動(dòng)成功之后使用jps可以看到如下進(jìn)程

- 瀏覽器登錄系統(tǒng)
打開(kāi)瀏覽器輸入 http://ip:10000 即可登錄系統(tǒng):

默認(rèn)用戶(hù)名:admin 默認(rèn)密碼:streamx

4. 系統(tǒng)配置
進(jìn)入系統(tǒng)之后,第一件要做的事情就是修改系統(tǒng)配置,在菜單 StreamX/Setting 下,這里可以添加一個(gè)Flink HOME 和 Flink Cluster。
- 配置 Flink Cluster
StreamX 做到了靈活的支持Flink 多版本的能力, 在任務(wù)里指定一個(gè)Flink 版本即可完成, 因此需要先添加一個(gè)或多個(gè)(如果你的任務(wù)依賴(lài)多個(gè)不同版本的Flink) 部署機(jī)器上安裝的 Flink 到系統(tǒng), 操作頁(yè)面如下:

打開(kāi) Flink Home 標(biāo)簽頁(yè)直接添加即可。

- 配置 Flink Cluster
StreamX 做到了 Remode (standalone) 模式的任務(wù)提交 (將Flink 任務(wù)提交到一個(gè)指定的集群), 如果有這類(lèi)部署需求,就先需要在系統(tǒng)里添加一個(gè)或多個(gè)已經(jīng)存在的 Flink standalone 集群。

5. 開(kāi)發(fā)部署應(yīng)用
千呼萬(wàn)喚始出來(lái), 以上準(zhǔn)備工作和系統(tǒng)環(huán)境設(shè)置都完成了, 到這一步, 終于可以在 streamx-console 平臺(tái)上開(kāi)發(fā)啟動(dòng)任務(wù)了, Let's go~
Flink SQL 任務(wù)
- 指定Flink版本
StreamX 支持 Flink 多版本(1.12+), 具體使用的時(shí)候非常簡(jiǎn)單,編輯自帶的 Flink SQL 示例任務(wù), 直接指定任務(wù)里對(duì)應(yīng)的Flink 版本即可。


2. 指定Flink Cluster

remote模式選擇之后,會(huì)出現(xiàn)Flink cluster 選項(xiàng),為必填項(xiàng), 選擇添加已有的Flink Cluster 即可:

更多使用參數(shù)可查看官網(wǎng)文檔和 Flink 參數(shù)相關(guān)說(shuō)明,以上操作都完成之后,直接點(diǎn)擊保存任務(wù)。
- 上線(xiàn)任務(wù)
所有的任務(wù)添加和修改之后,都必須經(jīng)過(guò)上線(xiàn)這一步。這一步內(nèi)部會(huì)做很多準(zhǔn)備工作,對(duì)于用戶(hù)來(lái)說(shuō)直接點(diǎn)擊上線(xiàn)按鈕即可完成此步驟。

注意:上線(xiàn)這一步不是任務(wù)啟動(dòng),而是一個(gè)準(zhǔn)備工作的步驟,內(nèi)部會(huì)做很多工作。如: 如果是 yarn-application的模式會(huì)將相關(guān)的 jar 上傳到hdfs,如果是 on k8s 會(huì)打鏡像等...
- 啟動(dòng)任務(wù)
上面的步驟都完成之后,就會(huì)看到有個(gè)啟動(dòng)按鈕,點(diǎn)擊啟動(dòng)任務(wù),稍等一會(huì)就會(huì)看到任務(wù)處于運(yùn)行狀態(tài),點(diǎn)擊任務(wù)名 就會(huì)直接跳轉(zhuǎn)到Flink WebUI中。
Datastream 任務(wù):
StreamX 在開(kāi)發(fā)之初就完整的支持了 Flink SQL 任務(wù) 和 Datastream 任務(wù),關(guān)于 Datastream任務(wù),F(xiàn)link 版本的指定, Flink Cluster 的指定(如果是 remote 模式) 和上面的 Flink SQL 任務(wù)一樣,這里不做贅述
6. 結(jié)束語(yǔ)
這將是一個(gè)系列的文章,本文是第一篇,詳細(xì)介紹了 StreamX 平臺(tái)的編譯部署安裝到運(yùn)行的整個(gè)過(guò)程。每個(gè)環(huán)節(jié)圖文并茂,相信很多小伙伴已經(jīng)躍躍欲試了,快去試試吧 ~ 更多精彩的地方等你來(lái)發(fā)掘 ??