StreamX: Flink 开发脚手架, 流批一体大数据平台正式开源
StreamX
let flink|spark easy
一个神奇的框架,让 Flink 开发更简单
🚀 什么是 StreamX
大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域 Apache Spark
和 Apache Flink
更是一个伟大的进步,尤其是Apache Flink
被普遍认为是下一代大数据流计算引擎,我们在使用 Flink
时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 我们将一些好的经验固化下来并结合业内的最佳实践, 通过不断努力终于诞生了今天的框架 —— StreamX
, 采用 java/scala 开发, 项目的初衷是 —— 让 Flink
开发更简单,使用StreamX
开发,可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务,StreamX
规范了项目的配置,鼓励函数式编程,提供了一系列开箱即用的Connectors
,支持scala
和java
两套 api, 并且提供一个数据平台,基于Apache Flink 封装的一个可视化的,轻量级的 Flink Submit 系统,旨在简化 Flink 任务提交和管理运维,标准化了配置、开发、测试、部署、监控、运维的整个过程,其最终目的是打造一个一站式大数据平台,流批一体,湖仓一体的解决方案
官网地址 http://www.streamxhub.com
github 地址 https://github.com/streamxhub/streamx
🎉 Features
开发脚手架
一系列开箱即用的 connectors
项目编译功能(maven 编译)
支持
Applicaion
模式,Yarn-Per-Job
模式启动快捷的日常操作(任务
启动
、停止
、savepoint
,从savepoint
恢复)支持火焰图
支持
notebook
(在线任务开发)项目配置和依赖版本化管理
支持任务备份、回滚(配置回滚)
在线管理依赖(maven pom)和自定义 jar
自定义 udf、连接器等支持
Flink sql Submit
Flink Sql WebIDE
支持 catalog、hive
从任务
开发
阶段到部署管理
全链路支持...
组成部分
Streamx
有三部分组成,分别是streamx-core
,streamx-pump
和 streamx-console
streamx-core
streamx-core
定位是一个开发时框架,关注编码开发,规范了配置文件,按照约定优于配置的方式进行开发,提供了一个开发时 RunTime Content
和一系列开箱即用的Connector
,扩展了DataStream
相关的方法,融合了DataStream
和Flink sql
api,简化繁琐的操作,聚焦业务本身,提高开发效率和开发体验
streamx-pump
pump
是抽水机,水泵的意思,streamx-pump
的定位是一个数据抽取的组件,类似于flinkx
,基于streamx-core
中提供的各种connector
开发,目的是打造一个方便快捷,开箱即用的大数据实时数据抽取和迁移组件,并且集成到streamx-console
中,解决实时数据源获取问题,目前在规划中
streamx-console
streamx-console
是一个综合实时数据平台,低代码(Low Code
)平台,可以较好的管理Flink
任务,集成了项目编译、发布、参数配置、启动、savepoint
,火焰图(flame graph
),Flink SQL
,监控等诸多功能于一体,大大简化了Flink
任务的日常操作和维护,融合了诸多最佳实践。旧时王谢堂前燕,飞入寻常百姓家,让大公司有能力研发使用的项目,现在人人可以使用,其最终目标是打造成一个实时数仓,流批一体的一站式大数据解决方案
如何安装
streamx-console 提供了开箱即用的安装包,安装之前对环境有些要求,具体要求如下
环境
操作系统: Linux 必须: 是
JAVA: 1.8+ 必须: 是
Maven: 3+ 必须: 是 说明: 部署机器必须安装 Maven,且配置好环境变量,项目编译会用到
Hadoop: 2+ 必须: 是 说明: HDFS,YARN 等必须安装,并且配置好相关环境变量
Flink: 1.12.0+ 必须: 是 说明: Flink 版本必须是 1.12.1 或以上版本,并且配置好 Flink 相关环境变量
MySQL: 5.6+ 必须: 是 说明: 部署机器或其他机器得安装 MySQL,系统会用到 MySQL
Python: 2+ 必须: 否 说明: 非必须,火焰图功能会用到 Python
Perl: 5.16.3+ 必须: 否 说明: 非必须,火焰图功能会用到 Python
安装
在安装前一定要确保当前部署的机器满足上面环境相关的要求,当前安装的机器必须要有 Hadoop 环境,安装并配置好了Flink 1.12.0+,如果准备工作都已就绪,就可以安装了
编译成功后,在 streamx-console-service 模块下找到 streamx-console-service-1.0.0-bin-tar.gz,
解包后目录如下
1.初始化工程 SQL
streamx-console 要求的数据库是 MySQL,版本 5.6+以上,如准备就绪则进行下面的操作:
创建数据库:
streamx
执行初始化 sql (解包后的 conf/
streamx.sql
)
2.修改相关的数据库信息
工程 SQL 初始化完毕,则修改conf/application-prod.yml
,找到 datasource 这一项,找到 mysql 的配置,修改成对应的信息即可,如下
3.启动 streamx-console
进入到bin
下直接执行 start.sh 即可启动项目,默认端口是 10000,如果没啥意外则会启动成功
相关的日志会输出到 streamx-console-service-1.0.0/logs/streamx.out 里
打开浏览器 输入 http://$deploy_host:10000/index.html 即可登录,登录界面如下
默认密码: admin / streamx
4. 系统配置
进入系统之后,第一件要做的事情就是修改系统配置,在菜单/StreamX/Setting 下,修改StreamX Webapp address
和 StreamX Console Workspace
如下:
StreamX Webapp address
配置StreamX Console
后台服务的访问地址StreamX Console Workspace
配置系统的工作空间,用于存放项目源码,编译后的项目等
如何使用
streamx-console 定位是流批一体的大数据平台,一站式解决方案,使用起来非常简单,没有复杂的概念和繁琐的操作,标准的 Flink 程序(安装 Flink 官方要去的结构和规范)和用streamx
开发的项目都做了很好的支持,下面我们使用streamx-quickstart
来快速开启 streamx-console 之旅
streamx-quickstart
是 StreamX 开发 Flink 的上手示例程序,具体请查阅
部署 DataStream 任务
下面的示例演示了如何部署一个 DataStream 应用
http://assets.streamxhub.com/20210408008.mp4
部署 FlinkSql 任务
下面的示例演示了如何部署一个 FlinkSql 应用
http://assets.streamxhub.com/flinksql.mp4
项目演示使用到的 flink sql 如下
使用到 maven 依赖如下
Kafka 模拟发送的数据如下
任务启动流程
任务启动流程图如下
关于项目的概念,Development Mode
,savepoint
,NoteBook
,自定义 jar 管理,任务发布,任务恢复,参数配置,参数对比,多版本管理等等更多使用教程和文档请移步官网http://www.streamxhub.com
目前项目已正式开源,无数个日夜里,作者在源码中苦苦寻找答案,并以此为乐,历经无数汗水,现终于得见天日. 现在她如初生婴儿一般满怀无限憧憬的出现在世人面前,请多多关照,如果眼下还是一团零星之火,运筹帷幄之后,迎面东风,就是一场烈焰燎原吧
版权声明: 本文为 InfoQ 作者【B e n】的原创文章。
原文链接:【http://xie.infoq.cn/article/659b701f4d78c01bca4bdd13e】。文章转载请联系作者。
评论 (2 条评论)