摘要:本文介绍了 StreamX 的部署安装,内容主要分为以下几个部分:
- 项目介绍
- 系统架构
- 部署环境要求
- 平台部署
- 系统配置
- 开发部署应用
- 结束语
1. 项目介绍
实时即未来,在实时处理流域Apache Spark
和Apache Flink
是一个伟大的进步,尤其是Apache Flink
被普遍认为是下一代大数据流计算引擎, 我们在使用Flink
&Spark
时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 我们将一些好的经验固化下来并结合业内的最佳实践, 通过不断努力终于诞生了今天的框架 ——StreamX
, 项目的初衷是 —— 让流处理更简单, 使用StreamX
开发,可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务,StreamX
规范了项目的配置,鼓励函数式编程,定义了最佳的编程方式,提供了一系列开箱即用的Connectors
,标准化了配置、开发、测试、部署、监控、运维的整个过程, 提供了scala
和java
两套api, 其最终目的是打造一个一站式大数据平台,流批一体,湖仓一体的解决方案
Make stream processing easier!!!
Features:
-
开发脚手架
-
多版本Flink支持(1.11,x, 1.12.x, 1.13 )
-
一系列开箱即用的connectors
-
支持项目编译功能(maven 编译)
-
在线参数配置
-
支持
Applicaion
模式,Yarn-Per-Job
模式启动 -
快捷的日常操作(任务
启动
、停止
、savepoint
,从savepoint
恢复) -
支持火焰图
-
支持
notebook
(在线任务开发) -
项目配置和依赖版本化管理
-
支持任务备份、回滚(配置回滚)
-
在线管理依赖(maven pom)和自定义jar
-
自定义udf、连接器等支持
-
Flink SQL WebIDE
-
支持catalog、hive
-
任务运行失败发送告警邮件
-
支持失败重启重试
-
从任务
开发
阶段到部署管理
全链路支持
2. 系统架构
StreamX 的初衷是让流处理更简单, 可能你还没遇到她, 也许第一眼就命中注定的恋爱了, 来, 让我们一块走进 StreamX 的世界! 这会是一个系列的文章, 为你详细讲述关于 StreamX 的故事。
StreamX 总体组件栈架构如下, 由 streamx-core 和 streamx-console 两个大的部分组成 , streamx-console 是一个非常重要的模块, 定位是一个 综合实时数据平台,流式数仓平台, 低代码 ( Low Code ), Flink & Spark 任务托管平台,可以较好的管理 Flink 任务,集成了项目编译、发布、参数配置、启动、savepoint ,火焰图 ( flame graph ),Flink SQL,监控等诸多功能于一体,大大简化了 Flink 任务的日常操作和维护,融合了诸多最佳实践。其最终目标是打造成一个实时数仓,流批一体的一站式大数据解决方案。
3. 部署环境要求
streamx-console提供了开箱即用的安装包,安装之前对环境有些要求,具体要求如下:
环境要求
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开发,需要nodejs环境,下载安装最新的nodejs即可。
sudo yum install -y nodejs
查看nodejs版本。
node --versionv16.13.2
MySQL
选择5.7.16
Flink
选择 1.13.6并且需要配置FLINK_HOME环境变量:
export FLINK_HOME=/opt/module/flink-1.13.6
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
特别注意: 如果是 Hadoop 3.x 系列, 除了正常的配置外, 需要在 core-site.xml 中特别指定下以下配置:
<property>
<name>dfs.client.datanode-restart.timeout</name>
<value>30</value>
</property>
4. 平台部署
本次基于 1.2.2 稳定版本进行安装部署,如果是本地编译部署安装的话, 请看下面的操作演示:
也可以直接下载发行包进行安装部署, 此方式也是推荐的安装部署方式, 简单, 快捷。
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
1. 创建数据库
CREATE DATABASE `streamx` CHARACTER SET utf8 COLLATE utf8_general_ci;
2. 初始化表
use streamx;
source /opt/module/streamx-console-service-1.2.2/script/final.sql
3. 配置连接信息 进入到 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
4. 配置workspace
同样进入到 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/
注意:其中,数据库用户名密码及JDBC连接URL需要修改为自己数据库的相关属性,hadoop-user-name及workspace需要根据自己的实际情况进行修改。其他情况可以暂时使用默认配置。
5. 启动服务
进入到 bin 下直接执行 startup.sh 即可启动项目,默认端口是10000,如果没啥意外则会启动成功,相关的日志会输出到streamx-console-service-1.2.2/logs/streamx.out 里。
/opt/module/streamx-console-service-1.2.2/bin/startup.sh
启动成功之后使用jps可以看到如下进程
6. 浏览器登录系统
打开浏览器输入 http://ip:10000 即可登录系统:
默认用户名:admin 默认密码:streamx
5. 系统配置
进入系统之后,第一件要做的事情就是修改系统配置,在菜单 StreamX/Setting 下,这里可以添加一个Flink HOME 和 Flink Cluster。
1. 配置 Flink Cluster
StreamX 做到了灵活的支持Flink 多版本的能力, 在任务里指定一个Flink 版本即可完成, 因此需要先添加一个或多个(如果你的任务依赖多个不同版本的Flink) 部署机器上安装的 Flink 到系统, 操作页面如下:
打开 Flink Home 标签页直接添加即可。
1. 配置 Flink Cluster
StreamX 做到了 Remode (standalone) 模式的任务提交 (将Flink 任务提交到一个指定的集群), 如果有这类部署需求,就先需要在系统里添加一个或多个已经存在的 Flink standalone 集群。
6. 开发部署应用
千呼万唤始出来, 以上准备工作和系统环境设置都完成了, 到这一步, 终于可以在 streamx-console 平台上开发启动任务了, Let's go~
Flink SQL 任务
1. 指定Flink版本
StreamX 支持 Flink 多版本(1.12+), 具体使用的时候非常简单,编辑自带的 Flink SQL 示例任务, 直接指定任务里对应的Flink 版本即可。
2. 指定Flink Cluster
remote模式选择之后,会出现Flink cluster 选项,为必填项, 选择添加已有的Flink Cluster 即可:
更多使用参数可查看官网文档和 Flink 参数相关说明,以上操作都完成之后,直接点击保存任务。
3. 上线任务
所有的任务添加和修改之后,都必须经过上线这一步。这一步内部会做很多准备工作,对于用户来说直接点击上线按钮即可完成此步骤。
注意:上线这一步不是任务启动,而是一个准备工作的步骤,内部会做很多工作。如: 如果是 yarn-application的模式会将相关的 jar 上传到hdfs,如果是 on k8s 会打镜像等...
4. 启动任务
上面的步骤都完成之后,就会看到有个启动按钮,点击启动任务,稍等一会就会看到任务处于运行状态,点击任务名 就会直接跳转到Flink WebUI中。
Datastream 任务:
StreamX 在开发之初就完整的支持了 Flink SQL 任务 和 Datastream 任务,关于 Datastream任务,Flink 版本的指定, Flink Cluster 的指定(如果是 remote 模式) 和上面的 Flink SQL 任务一样,这里不做赘述
7. 结束语
这将是一个系列的文章,本文是第一篇,详细介绍了 StreamX 平台的编译部署安装到运行的整个过程。每个环节图文并茂,相信很多小伙伴已经跃跃欲试了,快去试试吧 ~ 更多精彩的地方等你来发掘 ????