前置
一个让Flink流处理更简单的框架,国人开发,
降低学习成本和开发门槛,开发者只关心最核心的业务
标准化了配置,开发,测试,部署,监控,运维的整个过程
打造了一个一站式大数据平台,流批一体,湖仓一体的解决方案
为什么学它? 提高Flink开发效率的需求,降低Flink开发成本的欲望
介绍
初衷----让Flink开发更简单,后期也会对Spark做一个支持,它提供了一系列开箱即用的连接器(connectors)标准化了配置,开发,测试,部署,监控,运维的整个过程
。
**
StreamX 的特色
- 开发脚手架
- 多版本 Flink 支持(1.12+)
- 一系列开箱即用的 connectors
- 支持项目编译功能(maven 编译)
- 在线参数配置
- 支持 Applicaion 模式,Yarn-Per-Job 模式启动
- 快捷的日常操作(任务启动、停止、savepoint,从 savepoint 恢复)
- 支持火焰图
- 支持 notebook(在线任务开发)
- 项目配置和依赖版本化管理
- 支持任务备份、回滚(配置回滚)
- 在线管理依赖(maven pom)和自定义 jar
- 自定义 udf、连接器等支持
- Flink SQL WebIDE
- 支持 catalog、hive
- 任务运行失败发送告警邮件
- 支持失败重启重试
- 从任务开发阶段到部署管理全链路支持
- …
架构
streamx-core 定位是一个开发时框架,关注编码开发,规范了配置文件,按照约定优于配置的方式进行开发,提供了一个开发时 RunTime Content 和一系列开箱即用的 Connector,扩展了 DataStream 相关的方法,融合了 DataStream 和 Flink sql api,简化繁琐的操作,聚焦业务本身,提高开发效率和开发体验。
pump 是抽水机,水泵的意思,streamx-pump 的定位是一个数据抽取的组件,类似于 flinkx, 基于 streamx-core 中提供的各种 connector 开发,目的是打造一个方便快捷,开箱即用的大数据实时数据抽取和迁移组件,并且集成到 streamx-console 中,解决实时数据源获取问题,目前在规划中。
streamx-console 是一个综合实时数据平台,低代码(Low Code)平台,可以较好的管理Flink 任务,集成了项目编译、发布、参数配置、启动、savepoint,火焰图(flame graph),Flink SQL,监控等诸多功能于一体,大大简化了 Flink 任务的日常操作和维护,融合了诸多最佳实践。旧时王谢堂前燕,飞入寻常百姓家,让大公司有能力研发使用的项目,现在人人可以使用,其最终目标是打造成一个实时数仓,流批一体的一站式大数据解决方案。
安装部署StreamX
基于社区于 2022 年 3 月 24 日发布的最新版本 1.2.2 编写。
环境要求
准备环境
Linux:Centos7
JDK: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 -zxvf 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
wget https://gitee.com/lzc2025/maven_setting/raw/master/settings.xml
-O /opt/module/apache-maven-3.8.5/conf/settings.xml
注意:会遇到
警告: 无法验证 dlcdn.apache.org 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:
颁发的证书已经过期。
已发出 HTTP 请求,正在等待回应... 404 Not Found
解决办法:
sudo yum install -y ca-certificates
3.8.5版本没有了,用的3.8.6版本。
Node.js:console前端部分采用vue开发,需要 node.js 环境,下载安装最新的 node.js 即可。不同版本对应下载方式:https://github.com/nodesource/distributions
#ROOT状态下
curl -fsSL https://rpm.nodesource.com/setup_16.x | bash -
#非ROOT状态下
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs
查看 nodejs 版本。
node --version
MySQL :参考之前的安装
Flink:选择 1.13.6。需要配置 FLINK_HOME 环境变量。并导入Flink与Hadoop的连接Jar包
export FLINK_HOME=/opt/module/flink-1.13.6
Hadoop:选择 3.1.3。
配置相应的环境变量:
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export HADOOP_CLASSPATH=`hadoop classpath`
除了正常的配置外, 需要在 core-site.xml 中添加如下配置:
<property>
<name>dfs.client.datanode-restart.timeout</name>
<value>30</value>
</property>
安装StreamX
解压安装包
tar -zxvf streamx-console-service-1.2.2-bin.tar.gz -C /opt/module
解压后架构如下:
streamx-console-service-1.2.2
├── 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 //内部使用到的临时路径,不要删除
部署 Streamx 平台
1)在 mysql 中创建数据库
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)配置连接信息
vim /opt/module/streamx-console-service-1.2.2/conf/application.yml
...
# 配置默认数据源
primary: primary
datasource:
# 数据源-1,名称为 primary
primary:
username: root
password: aaaaaa
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://hadoop102:3306/streamx?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
...
streamx:
# HADOOP_USER_NAME
hadoop-user-name: root
# 本地的工作空间,用于存放项目源码,构建的目录等.
workspace:
local: /opt/module/streamx_workspace
修改部分:username和password改成自己的,url 中的名字改成自己,hadoop-user-name改成自己的,local路径改成自己的
4)启动 Server
/opt/module/streamx-console-service-1.2.2/bin/startup.sh
关闭是
/opt/module/streamx-console-service-1.2.2/bin/shutdown.sh
启动成功之后使用 jps 可以看到如下进程。
注意:如果出现Access denied for user 'root'@'hadoop102' (using password: YES) 问题,要查看配置下的密码,假如是0开头,那么需要加上单引号
5)浏览器登录系统默认端口是 10000
http://hadoop102:10000/
账号:admin ,密码:streamx
系统配置
配置 Flink HOME。
此时Flink配置成功。