生产实践 | 长安汽车从自研平台到 Apache StreamPark 的升级实践

文章讲述了长安汽车在业务发展中遇到的Flink作业管理挑战,通过引入ApacheStreamPark解决这些问题,简化开发流程,提高效率。StreamPark提供了用户权限管理、一站式流处理、可扩展性和运维支持,助力长安汽车应对大数据挑战。
摘要由CSDN通过智能技术生成

摘要 长安汽车是中国汽车四大集群阵营企业之一,随着业务发展和数智化的推进,对数据的实效性要求越来越高,Flink 作业越来越多,长安汽车原本开发了一套流应用平台,用来满足开发人员对于 Flink 作业管理和运维工作的基础需求,但是在实际使用中面临诸多挑战和困境,最终使用 Apache StreamPark 来作为一站式实时计算平台,有效解决了之前面临的诸多困境,StreamPark 提供的解决方案简化了整个开发流程,在 Flink 作业开发部署上节省了很多时间,走出了作业运维管理的泥沼,显著地提升了效率。
 

供稿单位|长安智能化研究院云平台开发所

编辑校对|潘月鹏

重庆长安汽车股份有限公司(简称“长安汽车”)成立于 1996 年 10 月 31 日,是中国汽车四大集团阵营企业之一,拥有 161 年历史底蕴,现在旗下包括长安启源、深蓝汽车、阿维塔、长安引力、长安凯程等自主品牌以及长安福特、长安马自达等合资品牌。

近些年随着汽车销量的不断增加与智能化程度的不断提升,车辆每天将产生千亿级别的 CAN 数据,清洗处理后的数据也在 50 亿级别,面对如此庞大且持续膨胀的数据规模,如何从海量数据中快速提取挖掘有价值的信息,为研发、生产、销售等部门提供数据支持,成为当前亟需解决的问题。

1. 实时计算面临的挑战


长安汽车数据的存储与分析处理主要由云上和云下两部分构成,云上指的是我们部署在腾讯云服务器上的大数据集群,CDH 搭建,  用于存储热数据;云下是部署在本地机房的 CDP 集群,从云上拉取同步数据,进行存储和分析。Flink 在长安汽车实时计算中一直扮演着重要的角色,长安汽车开发了一套流应用平台,来满足开发人员对于 Flink 作业管理和运维工作的基础需求。但是在实际使用中,流应用平台存在以下四各方面问题:

① 功能单一: 只提供部署功能,无用户权限管理、团队管理、角色管理、项目管理,无法满足项目、团队管理需求。

② 易用性不足: SQL 编写无提示、日志浏览不便、不支持调试、无错误检测、无版本管理、无配置中心等。

③ 可扩展性较差: 不支持在线扩容 Flink 集群、新增或更换 Flink 版本,新增 Flink Connectors、CDC 等。

④ 可维护性较差: 无日志查看、无版本管理、无配置中心等。

2.为什么用 Apache StreamPark


我们针对 Flink 作业面临的困境,决定先从开源领域寻求解决方案,因此我们全面调研了 Apache StreamPark(以下简称“StreamPark”)、D**ky、str**ing-**-web 等相关的开源项目,从核心能力、稳定性、易用性、可扩展性、可维护性、操作体验等多个维度进行了全方位的评估对比,并结合当前我们的流作业开发需求以及我司的大数据平台后续规划,发现 Apache StreamPark 是最符合我们当前需求的产品,因此采用 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 还能妥善管理作业的整个生命周期,包括作业的开发、部署、运营以及问题诊断等环节,使开发人员能够专注于业务本身,无需过多关注 Flink 作业的管理和运维问题。StreamPark 的作业开发管理模块大致可以分为三个部分:作业管理基础功能、Jar 作业管理和 FlinkSQL 作业管理。

3. StreamPark 落地实践


为了使 StreamPark 在日常生产实践中与我们的需求更加契合,我们对其进行了一定的适应性改造:
 

3.1 适应性改造

  • 告警信息改造

长安汽车针对 StreamPark 的一些特性进行了适应性改造,比如针对 StreamPark 的告警不仅支持邮件、飞书、钉钉和企业微信推送,还支持将告警信息按照重要程度进行分类,推送到不同的告警群与相关个人,方便相关运维人员及时捕捉重要告警信息,快速响应。
 

  • Nacos 配置管理支持

为解决 Flink 应用的配置信息写死在 Jar 包中,给开发、测试、运维带来的不便,我们将 Nacos 与 StreamPark 平台进行集成,带来了如下优势:
 

① 配置集中管理,通过 StreamPark,开发人员可以集中管理所有 Flink 应用配置信息,实现配置的集中管理和更新,避免了在多个平台间进行切换和重复操作。同时加强了配置管理的安全性,对访问和修改配置的操作进行权限控制,防止未经授权的访问和修改。
 

② 配置动态更新,StreamPark 与 Nacos 的集成使得 Flink 应用能够及时获取最新的配置信息,实现配置的动态更新,避免了修改 Flink 配置信息后需要重新编译、发布、重启等繁琐流程,提高了系统的灵活性和响应速度。同时,StreamPark 可以利用 Nacos 的配置推送功能,实现配置信息的自动化更新。

3.2 遇到的问题及解决方案

我们当前私有云分析集群使用的是 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 目录没有

正常上传,找到 HDFS 上初始化的 StremPark work 路径,观察一下 hdfs:///streampark/flink/ 下的 lib 目录是否完整,不完整的话手动将本地 Flink Home 目录下的 lib put 上去即可。

  • 4. 作业失败后自动拉起导致作业重复

StreamPark 自身具备作业使用后重启拉取的能力,当检测到作业失败后会重新拉起,但在实践中发现会出现同一个失败的作业在 YARN 上启动多个的情况,经过和社区沟通,已确定是个 Bug,最终在 2.1.3 中解决了该 Bug。

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 应用开发效率。

- END-
 

Apache StreamPark 是一个流处理应用程序开发管理框架。旨在轻松构建和管理流处理应用程序,提供使用 Apache Flink 和 Apache Spark 编写流处理应用程序的开发框架和一站式流计算平台,核心能力包括但不限于应用开发、调试、交互查询、部署、运维、实时数仓等。目前已有腾讯、百度、联通、天翼云、自如、马蜂窝、同程数科、长安汽车、大健云仓等众多公司在生产环境使用、并且获得了多项业内荣誉,是近年来成长较快的开源项目。

💻 项目地址:https://github.com/apache/streampark

🧐 提交问题和建议:https://github.com/apache/streampark/issues

🥁 贡献代码:https://github.com/apache/streampark/pulls

📮 Proposal:https://cwiki.apache.org/confluence/display/INCUBATOR/StreamPark+Proposal

📧 订阅社区开发邮件列表:dev@streampark.apache.org

💁‍♀️社区沟通:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apache StreamPark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值