本期推荐的是一个让Flink&Spark开发更简单的一站式大数据框架——StreamX。
StreamX是一个让 Apache Spark 和 Apache Flink 开发更简单的一站式大数据框架,StreamX 规范了项目的配置,鼓励函数式编程,定义了最佳的编程方式,并且提供了一系列开箱即用的 Connectors ,标准化了配置、开发、测试、部署、监控、运维的整个过程,开发者只需关心最核心的业务即可,极大地降低学习成本和开发门槛。
主要特性
- 提供一系列开箱即用的 Connectors
- 支持项目编译功能(maven 编译)
- 支持 Applicaion 模式, Yarn-Per-Job 模式启动
- 快捷的日常操作(任务启动、停止、savepoint,从savepoint恢复)
- 支持notebook(在线任务开发)
- 支持任务备份、回滚(配置回滚)
- 提供 scala 和 java 两套api
功能架构
Streamx 有三部分组成,分别是 streamx-core , streamx-pump 和 streamx-console 。
streamx-core:
streamx-core 定位是一个开发时框架,提供了一系列开箱即用的 Connector ,扩展了 DataStream 相关的方法,融合了 DataStream 和 Flink sql api。
streamx-pump:
streamx-pump 定位是一个数据抽取的组件,类似于 flinkx ,基于 streamx-core 中提供的各种 connector 开发。
streamx-console:
streamx-console 是一个综合实时数据平台,低代码 (Low Code) 平台,可以较好地管理 Flink 任务,集成了项目编译、发布、参数配置、启动、 savepoint ,火焰图 (flame graph) ,Flink SQL,监控等诸多功能于一体,大大简化了 Flink 任务的日常操作和维护。
安装部署
1 环境准备
streamx-console 提供了开箱即用的安装包,安装之前对环境有些要求,具体要求如下:
目前 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 集群,请参考 Flink K8s 集成支持 :
http://www.streamxhub.com/docs/flink-k8s/k8s-dev
2 编译安装
你可以选择手动编译安装也可以直接下载编译好的安装包,手动编译安装步骤如下:
git clone https://github.com/streamxhub/streamx.git
cd Streamx
mvn clean install -DskipTests -Denv=prod
顺利的话可以看到编译成功信息:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Streamx 1.0.0:
[INFO]
[INFO] Streamx ............................................ SUCCESS [ 1.882 s]
[INFO] Streamx : Common ................................... SUCCESS [ 15.700 s]
[INFO] Streamx : Flink Parent ............................. SUCCESS [ 0.032 s]
[INFO] Streamx : Flink Common ............................. SUCCESS [ 8.243 s]
[INFO] Streamx : Flink Core ............................... SUCCESS [ 17.332 s]
[INFO] Streamx : Flink Test ............................... SUCCESS [ 42.742 s]
[INFO] Streamx : Spark Parent ............................. SUCCESS [ 0.018 s]
[INFO] Streamx : Spark Core ............................... SUCCESS [ 12.028 s]
[INFO] Streamx : Spark Test ............................... SUCCESS [ 5.828 s]
[INFO] Streamx : Spark Cli ................................ SUCCESS [ 0.016 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
安装完成之后就看到最终的工程文件,位于
streamx/streamx-console/streamx-console-service/target/streamx-console-service-1.0.0-bin.tar.gz ,解包后安装目录如下:
.
streamx-console-service-1.0.0
├── bin
│ ├── flame-graph
│ ├── └── *.py //火焰图相关功能脚本 ( 内部使用,用户无需关注 )
│ ├── startup.sh //启动脚本
│ ├── setclasspath.sh //java 环境变量相关的脚本 ( 内部使用,用户无需关注 )
│ ├── shutdown.sh //停止脚本
│ ├── yaml.sh //内部使用解析 yaml 参数的脚本 ( 内部使用,用户无需关注 )
├── conf
│ ├── application.yaml //项目的配置文件 ( 注意不要改动名称 )
│ ├── application-prod.yml //项目的配置文件 ( 开发者部署需要改动的文件,注意不要改动名称 )
│ ├── 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 提交相关功能 ( 内部使用,用户无需关注 )
├── logs //程序 log 目录
├── temp //内部使用到的零时路径,不要删除
3 修改数据库配置
安装解包已完成,接下来准备数据相关的工作:
- 新建数据库 streamx 确保在部署机可以连接的 mysql 里新建数据库 streamx
- 修改连接信息 进入到 conf 下,修改 conf/application-prod.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 启动项目
进入到 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 即可登录,登录界面如下(默认密码:admin / streamx):
5 修改系统配置
进入系统之后,第一件要做的事情就是修改系统配置,在菜单 /StreamX/Setting 下,操作界面如下:
主要配置项分为以下几类:
Flink Home:
这里配置全局的 Flink Home,此处是系统唯一指定 Flink 环境的地方,会作用于所有的作业。
Maven Home:
指定 maven Home,目前暂不支持,下个版本实现。
StreamX Env:
StreamX Webapp address :这里配置 StreamX Console 的 web url 访问地址,主要火焰图功能会用到,具体任务会将收集到的信息通过此处暴露的 url 发送 http 请求到系统,进行收集展示。
StreamX Console Workspace :配置系统的工作空间,用于存放项目源码,编译后的项目等。
Email:
Alert Email 相关的配置是配置发送者邮件的信息,具体配置请查阅相关邮箱资料和文档进行配置。
系统截图
更多内容大家可自行前往阅读。