梦想的流:Streampark功能期望与建议
  o38oyCUvCgVP 2023年12月10日 39 0



文章目录

  • 01 引言
  • 02 功能
  • 2.1 资源管理
  • 2.2 内置Flink集群/插件
  • 2.3 支持模板
  • 2.4 Gump模式
  • 2.5 预览功能
  • 2.6 CLI形式
  • 2.7 可拔插
  • 03 优化
  • 3.1 变量管理
  • 3.2 用户管理
  • 3.3 作业配置
  • 04 文末


01 引言

官方文档https://streampark.apache.org/Github地址https://github.com/apache/incubator-streampark

梦想的流:Streampark功能期望与建议_Streampark

博主之前写过一篇博文《Streampark使用体验与建议》,可以知道Streampark它可以:

  • 让流处理更简单, 使用StreamPark开发;
  • 可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务;
  • 规范了项目的配置,鼓励函数式编程,定义了最佳的编程方式;
  • 提供了一系列开箱即用的Connectors;
  • 标准化了配置、开发、测试、部署、监控、运维的整个过程;
  • 提供了scalajava两套api

其最终目的是打造一个一站式大数据平台,流批一体,湖仓一体的解决方案

博主在使用 Streampark 的过程中,产生了很多的idea,本文记录下,仅供参考,欢迎大家评论。

02 功能

以下是博主期望后续可以新增的功能。

2.1 资源管理

资源管理:主要统一管理不同类型的jar包,可以支持自定义jar包上传、在线下载、jar包在线解析,并可以自定义分组。

可以把jar包类型主要分为如下几类:

  • Catalog(目录):该jar包主要是用于管理项目的元数据(Fink 默认支持基于MemoryCatalog),可以支持自定义Catalog(如:sqlitemysql等)。在上传时,支持自动解析jar包的配置参数(使用工厂模式)、jar包的启用与禁用。
  • Connector(连接器):支持自动解析jar包的连接参数(使用工厂模式);
  • Function(函数):功能同上。
  • Format(格式化):功能同上,例如:kafka连接器参数里面有一个value.format参数,这里就用到了。
  • Entrypoint(执行jar包):jar模式下,可以选的执行jar包,上传后自动解析META-INF的MainClass,无需用户手动填写;
  • Lib(依赖库):以上各种资源类型,依赖到的jar包;
  • Goup(分组):以上不同jar资源类型的分组,分组里面还可以选择分组,可以为不同作业场景提前做好jar包的分组。

2.2 内置Flink集群/插件

TipsDockerFile可以使用wget下载flink安装包,然后自动解压,并在容器启动后,自动启动Flink 集群。

为了方便使用者快速入门,可通过开关配置是否自动下载Flink安装包,解压并自动安装,本地容器启动Flink 集群,这样用户首次使用时,即可不用去配置Settings相关的信息了,因为是内置的,所以在Settings菜单里的Flink HomeFlink Cluster看到内置的配置以及启动的集群。

梦想的流:Streampark功能期望与建议_jar包_02

2.3 支持模板

如果为了更好地让开发者去学习新的Connector以及降低学习FlinkSQL成本,可以支持模板配置,模板插入,这里特指FlinkSQL模式。

当配置完模板之后,在选择模板时,自动插入模板,并可以把依赖的jar/pom自动填充,如下图所示:

梦想的流:Streampark功能期望与建议_flink_03

2.4 Gump模式

除了FlinkSQL模式以及Jar模式,可以考虑加入Gump(傻瓜)模式,不过可能会破坏项目的架构,得慎重!!!

所谓的Gump模式,指的就是像Navicat一样使用,使用Catalog去管理元数据,无需手动每次执行FlinkSQL都需要Create table。

Catalog目录下依次有:数据库 → 表/视图/方法。点击对应的树节点,可以显示详细的配置参数,同时右键,可以新建不同类型的目录、表(选择资源管理的jar),可视化界面填写参数。

除了界面的方式来配置,同时也可以通过DDL语法来创建数据库、表、视图等。也可以使用DML语法来对数据进行增删改(这里没提到查,下面会说),做到真正意义上的流批一体(例如:通过操作jdbc的catalog,可以新增查改关系型数据的的表内容,实现批处理)。

结构示例图如下(有点类似VVP):

梦想的流:Streampark功能期望与建议_产品设计_04

2.5 预览功能

所谓的预览功能,就是在Gump模式下使用FlinkSQLselect语法,界面可以实时显示数据,同时这里的界面数据可以通过分享链接的形式,让其它的系统做嵌入ifream 显示,类似于grafana 分享监控指标页面。

Flink的查询功能似乎是没这么简单的,应该是需要另外功能去不断fetch数据的。这里的预览功能可以选择前面提到的内置Flink集群作为计算资源,方便用户操作。

梦想的流:Streampark功能期望与建议_产品设计_05

2.6 CLI形式

Flink配置详情:https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/config/

这里可能对项目的破坏比较大,只是想法,仅供参考!

streampark提交作业的应该是使用某个指定版本的Flink来提交的(或打包指定某个版本),也就是使用Java api的形式。虽然api可以很方便让我们提交作业,但是对于不懂Flink 的开发来说,学习其api无疑是很困难的,所以博主建议可以使用Command的形式,有如下几个原因:

  • 首先,官方文档对Command的文档是比较完善的,不懂的同学可以直接去查。
  • 其次,开发者需要不断的去适配新版本的Flink,如果使用command,使用固定的命令即可
  • 这里的提交客户端,也就是不同Flink版本的安装包,可以通过开放Flink的开放api或者去scrap下来,用户自主下载安装,同时自动配置Flink Home。

当然,这里可能会涉及到一些返回结果的获取,例如:提交到yarn,初步的想法是通过日志正则获取application_id,然后根据application_id去调用yarn的rest接口获取flink job id。

其它的场景,应该总是可以有合适的方式的去获取flink的指标的。

2.7 可拔插

在前面的步骤,可以通过离线上传或者在线下载多版本的Flink插件(安装包),然后通过Command的形式提交作业了,类似的Hadoop客户端,Kerberos认证组件等也可以通过在线过离线上传的方式安装。

其实博主的想法就是插件的动态安装,可拔插式编程,开发者只需要知道使用java命令去调用相关的command shell 命令即可,只需要安装对应的组件。能想到的有如下几个插件:

  • Flink插件管理:获取最新flink插件列表(开放apiscrap方式获取),上传自定义或下载安装包,自动解压安装,自动补充Flink Home路径(这里的压力似乎给到了Flink的开发团队了😄)。
  • 计算集群管理hadoop集群(包含客户端配置、服务端资源重定向跳转管理等)、Kubernetes(客户端配置、dashboard界面管理等),aws等;
  • 认证组件管理kerberos认证组件管理;
  • 。。。。。。

梦想的流:Streampark功能期望与建议_flink_06

03 优化

接下来说说我对Streampark的优化建议。

3.1 变量管理

变量管理,建议加多一个变量类型,例如秘钥、路径、文件等。如果有其他模块引用了(目前是FlinkSQL引用),可以根据类型来做更灵活的操作。

梦想的流:Streampark功能期望与建议_产品设计_07


就类似jenkins的“全局凭证”模块,如下图:

梦想的流:Streampark功能期望与建议_flink_08

3.2 用户管理

建议系统管理不要放到菜单栏,或者放到菜单栏的底部,让用户更加的专注于“作业的开发”

梦想的流:Streampark功能期望与建议_flink_09

3.3 作业配置

作业的配置比较多,能否弄一个全局默认配置?

或者说,配置能否像CDH一样,做到可视化(如果想使用户了解配置详情或中文含义,这总得是需要花时间去“翻译的”整理的),例如:

梦想的流:Streampark功能期望与建议_Streampark_10

04 文末

以上是博主对Streampark提出的一些关于界面功能的优化与建议,仅为个人看法,欢迎大家指出。并希望Streampark能越来越好,最后附上Streampark的Github地址以及文档:

谢谢大家的阅读,本文完!


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月10日 0

暂无评论

推荐阅读
o38oyCUvCgVP