供稿单位|长安智能化研究院云平台开发所
编辑校对|潘月鹏
我们针对 Flink 作业面临的困境,决定先从开源领域寻求解决方案,因此我们全面调研了 Apache StreamPark(以下简称“StreamPark”)、D**ky、str**ing-**-web 等相关的开源项目,从核心能力、稳定性、易用性、可扩展性、可维护性、操作体验等多个维度进行了全方位的评估对比,并结合当前我们的流作业开发需求以及我司的大数据平台后续规划,发现 Apache StreamPark 是最符合我们当前需求的产品,因此采用 StreamPark 作为我们的流计算平台,StreamPark 有以下优势:
完善的基础管理能力
StreamPark 解决了我们已有的流应用平台无用户权限管理、团队管理、角色管理、项目管理、团队管理等问题。
一站式流处理平台
StreamPark 解决了流应用平台易用性不足,SQL 编写无提示、日志浏览不方便、无错误检测、无版本管理、无配置中心等问题。
① StreamPark 具备完善的 SQL 校验功能,实现了自动 build/push 镜像,使用自定义类加载器,通过 Child-first 加载方式解决了 YARN 和 K8s 两种运行模式、支持了自由切换 Flink 版本等特性。
② StreamPark 提供了作业监控和日志管理的功能,可以帮助用户实时监控作业的运行状态,查看作业的日志信息,以及进行故障排除。使得用户可以快速发现和解决作业运行中的问题。
可扩展性强
StreamPark 解决了流应用平台可扩展性差,不支持在线扩容 Flink集群、新增或更换 Flink 版本、Flink Connectors 不足等问题。
① StreamPark 设计具有良好的可扩展性和灵活性,可以支持大规模的 Flink on Yarn 作业运行,它能够与现有的 Yarn 集群无缝集成,并可以根据需要进行定制和扩展。此外,StreamPark 还提供了多种配置选项和功能扩展点,以满足用户多样化的需求。
② StreamPark 具备 Flink 作业开发所需的整套工具。在 StreamPark 中,对于编写代码的 Flink 作业,它提供了一种更优秀的解决方案,将程序配置进行了标准化,简化了编程模型,同时还提供了一系列连接器,显著降低了 DataStream 开发的难度。
适应性改造
告警信息改造
长安汽车针对 StreamPark 的一些特性进行了适应性改造,比如针对 StreamPark 的告警不仅支持邮件、飞书、钉钉和企业微信推送,还支持将告警信息按照重要程度进行分类,推送到不同的告警群与相关个人,方便相关运维人员及时捕捉重要告警信息,快速响应。
Nacos 配置管理支持
为解决 Flink 应用的配置信息写死在 Jar 包中,给开发、测试、运维带来的不便,我们将 Nacos 与 StreamPark 平台进行集成,带来了如下优势:
① 配置集中管理,通过 StreamPark,开发人员可以集中管理所有 Flink 应用配置信息,实现配置的集中管理和更新,避免了在多个平台间进行切换和重复操作。同时加强了配置管理的安全性,对访问和修改配置的操作进行权限控制,防止未经授权的访问和修改。
② 配置动态更新,StreamPark 与 Nacos 的集成使得 Flink 应用能够及时获取最新的配置信息,实现配置的动态更新,避免了修改 Flink 配置信息后需要重新编译、发布、重启等繁琐流程,提高了系统的灵活性和响应速度。同时,StreamPark 可以利用 Nacos 的配置推送功能,实现配置信息的自动化更新。
遇到的问题及解决方案
我们当前私有云分析集群使用的是 Cloudera CDP,Flink 版本为 Cloudera Version 1.14,整体 Flink 安装目录以及配置文件结构与社区版本有较大出入。直接根据 StreamPark 官方文档进行部署,将无法配置 Flink Home,以及后续整体 Flink 任务提交到集群中,因此需要进行针对化适配集成,在满足使用需求上,尽量提供完整的 StreamPark 使用体验。
1. Flink 集群无法访问
① 问题描述:Cloudera Flink 的安装路径与实际提交路径不一致,实际提交路径下缺少 conf 目录。
② 解决办法:实际的 flink 提交路径在
因此路径
可以理解为真正的 Flink Home,具体查看该目录下内容。
发现缺少 conf 目录,倘若配置该目录在 StreamPark 为 Flink Home 将无法访问到集群,因此可软连接 Flink 配置或者在该路径下编辑集群中的 Flink 配置文件。
综上,前置配置和打包好代码(代码中可能会涉及到自己使用上的优化修改)之后,可以进行部署。
注意 2.0 的版本打包的话直接执行源码中的 build.sh 即可,选择混合部署,生成的包在 dist 目录下。
2. Hadoop 环境检查失败
解决办法:在部署 StreamPark 的节点上添加一下 hadoop 环境即可添加
source 使其生效,重启 StreamPark 即可。
3. HDFS 的 Flink 路径下缺少 lib 目录
解决办法:在于部署后的 StreamPark 在 HDFS 上的工作目录上 lib 目录没有
4. 作业失败后自动拉起导致作业重复
目前长安汽车已经在云上生产/预生产环境、云下生产/预生产环境中部署了 StreamPark,截至发稿前 StreamPark 共管理了 150+ 的 Flink 作业,包括 JAR 和与 SQL 作业。涉及利用 Flink、FlinkCDC 等技术,从 MySQL 或 kafka 同步数据到 MySQL、Doris、HBase、Hive 等数据库。后续所有环境总计 3000+ 的 Flink 作业也会分批迁至 StreamPark 来集中管理 。
Apache StreamPark 带来的收益最明显的就是其提供了一站式服务,业务开发同学可以在 StreamPark 上完成作业开发编译发布,无需再使用多个工具完成一个 FlinkSQL 作业开发,简化了整个开发流程,StreamPark 给我们在 Flink 作业开发部署上节省了很多时间,显著地提升了 Flink 应用开发效率。
往期精彩文章汇总
💁♀️社区沟通: