长安汽车基于 Apache Doris 的车联网数据分析平台建设实践

news2024/11/22 5:41:31

导读:随着消费者更安全、更舒适、更便捷的驾驶体验需求不断增长,汽车智能化已成必然趋势。长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构,专注于汽车智能化技术的创新与研究。为满足各业务部门的数据分析需求,长安汽车基于 Apache Doris 升级了车联网数据分析平台,支撑单日百亿级别数据实时处理,并实现十亿级别数据查询秒级响应,为长安汽车在提升用户用车体验、实时预警车辆故障、保证车辆安全驾驶等方面带来显著成果,为其在智能化方向的技术创新提供了有力支持。

作者|长安汽车智能化研究院

智能化是汽车工业进程中的一场革命,它旨在利用大数据、人工智能、云计算、物联网等前沿数字技术,对汽车设备和系统的运行状态进行全方位的感知、分析、决策和控制,从而提高汽车的安全性、舒适性、便捷性和节能性。

长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构,专注于汽车智能化技术的创新与研究,其愿景是通过持续创新和技术突破,实现汽车智能驾驶、智能网联和智能交通的全面发展,为消费者提供更安全、更便捷、更智能的出行体验,并致力于成为中国汽车智能化领域的领军企业。

实现汽车智能化的关键之一,是需要建立稳定、高效的数据平台,以承载和利用海量的车联网数据。作为智能化发展的重要支撑,长安汽车智能化研究院肩负着整个长安汽车集团车联网数据的汇聚、处理和应用工作。为满足各业务部门提出的数据支持需求,目前已经构建了车联网数据分析平台,并在业务指标分析、质量管理系统、智慧能耗、智能诊断、智慧运营等多个重点领域实现数据应用。

本文将详细介绍长安汽车车联网数据分析平台的演进历程及实践经验,分享长安汽车基于 Apache Doris 支撑单日百亿级别数据实时处理、实现十亿级别数据查询秒级响应的实践经验。此外,Apache Doris 的引入还为长安汽车在用户用车体验提升、驾驶安全保障等方面带来显著收益,为长安汽车从机电化到智能化转型发展提供有力支持

汽车智能化所面临的挑战

近些年来,长安汽车取得了令人瞩目的销量增长成绩。1-8 月,长安汽车自主乘用车累计销量超百万辆、保持持续上升的发展势头,以深蓝、阿维塔、启源为代表的新能源系列品牌力和产品竞争力不断提升,自主新能源车累计销量约为 25.6 万辆、同比增长 102.44%,成为销量增长新动能。

在汽车销量快速攀升的背后,车联网数据更是呈现爆发式增长的态势,其中最为核心的即车辆 CAN 总线数据。CAN 即 Controller Area Network,通过 CAN 总线可以对车辆上的各类电子控制系统进行统一通信,在实际车辆运行过程中 ,CAN 总线数据是车辆安全性、可靠性和高性能的重要保证:

  • 车辆系统监测和控制:CAN 总线数据可用于监测和控制系统中的各种设备和组件。传感器通过 CAN 总线发送其测量值,如温度、压力、位置等,以便其他设备或控制器实时监测和采取相应的措施。同时,控制器可以通过 CAN 总线向执行器发送控制指令,如调节阀门、驱动电机等,以实现对系统的控制。
  • 车辆信息实时反馈:CAN 总线数据可用于提供实时反馈信息。例如在车辆控制系统中,传感器通过 CAN 总线传输车速、转向角度、制动状态等数据,控制器可以根据这些数据进行实时决策和调整,以确保车辆的安全性和性能。
  • 数据共享和协调:CAN 总线数据允许不同设备之间进行数据共享和协调。通过 CAN 总线,不同的控制器和设备可以交换信息,共享状态和控制命令,有利于提高系统的整体性能和效率。
  • 网络管理和故障诊断:CAN 总线数据用于网络管理和故障诊断。通过 CAN 总线,可以进行设备的自动识别、配置和监控,以便进行网络管理和故障排查,提高系统的可靠性和可维护性。

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

而想要提供良好的数据支持及服务,首先需要应对以下几大挑战:

  • 大规模数据实时写入及处理:为实现智能化,汽车的车门、座椅、刹车灯设备被设置了大量的传感器,每个传感器收集一种或者多种信号数据,数据被汇聚后进一步加工处理。目前长安汽车需要支持至少 400 万辆车的链接,车联网数据每秒吞吐量已达百万级 TPS ,每日新增数据规模高达数十 TB ,且还在持续增长中。如何对数据进行实时写入成为了长安汽车首要面临的挑战。
  • 准确及时的实时数据分析需求:车联网场景下数据分析通常要求实时性,快速获取分析结果是实时监控、故障诊断、预警和实时决策等服务的重要保障。例如在智能诊断中,车企需要近实时地收集相关信号数据,并快速定位故障原因。通过分析车辆传感器数据、行驶记录等,可以提前发现潜在故障,进行预防性维护,提高车辆的可靠性和安全性。
  • 更加低廉的数据存储和计算成本:面对快速增长的的数据以及日益强烈的全量写入和计算需求,导致数据存储和计算成本不断攀升。这就要求数据平台具备低成本存储和计算的能力,以降低使用成本;同时需具备弹性伸缩能力,以便用户在业务高峰期快速扩容,提升海量数据计算场景的分析效率。

为给用户提供更优质的驾车体验、为业务部门提供更准确高效的数据支持,长安汽车开始对大数据平台的建设进行探索和实践。

Hive 离线数据仓库难以支撑超大规模实时数据服务

长安汽车车联网-Hive 离线数仓.jpg

长安汽车最早以 Hive 为核心构建了数据平台架构,所处理数据包括车辆 CAN 总线数据和埋点数据,这些数据通过 4G 网络从车端传送至长安云端网关,然后由网关将数据写入 Kafka。考虑到数据量级和存储空间的限制,早期架构中的数据处理流程是将 Kafka 采集到的数据直接通过 Flink 进行处理,并通过 ETL 将结果存储到 Hive 中。下游应用使用 Spark SQL 进行逐层离线计算,并通过 Sqoop 将汇总数据导出到 MySQL 中。最终由 Hive 和 MySQL 分别为应用层提供数据服务。

尽管该架构在早期基本满足了数据处理需求,但随着车辆销量不断增长,当需要面对每天千亿级别的数据处理分析工作时,架构的问题逐步暴露出来:

  • 数据时效性无法保证:Hive 的导入速度较慢,尤其在处理大规模数据时,导入时间明显增加;同时部分业务依赖 T+1 离线任务,无法满足实时数据处理需求;此外, Hive 只支持分区覆盖,不支持主键级别的数据更新,无法满足特殊场景的数据更新需求。
  • 数据查询分析延迟较高:对于 10 亿级别以上大规模表查询,Hive 查询性能较慢。通过 SparkSQL 进行数仓分层运算时,启动和任务执行时间较长,对查询响应也会产生影响。此外,数据看板、BI 展示应用无法直接从 Hive 中查询,需要将 Hive 中数据导出到 MySQL 中,由 MySQL 提供服务,受限于 Hive 导数性能,当数据量较大时,导出到 MySQL 耗时大幅增加,进而导致查询响应时间变长。此外,通过 Java 后端查询 MySQL 时,数据量过大也会影响数据的响应时间。

追根究底,产生这些问题的根本原因在于早期架构无法满足超大规模实时数据场景下的数据需求,这迫使长安汽车必须进行平台升级改造。

技术调研与选型

长安汽车经过深入调研,决定引入开源实时数据仓库 Apache Doris ,在导入性能、实时查询等方面具有显著优势:

  • 丰富的数据导入方式:Doris 提供了丰富的内置导入方式,如 Broker Load 和 Stream Load 等,可以满足实时和离线场景中数据导入需求。
  • 支持实时查询分析:Doris 大表 Join 能力突出,提供了多种分布式 Join 方式,使 Join SQL 编写具备高度灵活性,极大提升数据分析的效率。此外,Doris 支持单节点上万 QPS 的超高并发,可解决早期架构由于前端并发量过大导致查询失败的问题。
  • 较低的使用成本:Doris 兼容 MySQL 协议,开发人员可以更高效便捷的使用 MySQL 编写和执行查询语句,有效提高开发效率。基于 Doris 极简的架构,不仅让部署运维更加简单,也让扩缩容操作变的更加方便弹性。同时,Doris 拥有良好的上下游生态,可为用户提供灵活高效的数据管理和分析体验。这些优势和特性都极大的降低了 Doris 的使用成本。

除此以外,开源社区的活跃度也是我们考虑的重要因素之一 。Apache Doris 吸引了大量的开发者及用户参与社区,共同贡献代码和改进 Doris,这对质量和稳定性的提高起关键作用。同时,Doris 社区为用户提供了全面的文档资料和技术支持,任何问题都可以快速得到解答和帮助。Apache Doris 的活跃程度使我们在使用时更加放心,解决了技术方面的后顾之忧。

基于 Apache Doris 车联网数据分析平台

长安汽车车联网-车联网数据分析平台.jpg

在新的车联网数据分析平台中,通过 Flink 结合 Doris 的 Stream Load 功能,可直接将 Kafka 数据实时写入 Doris,同时,利用 Doris Broker Load 功能可以将 Hive 中数据导入到 Doris 中进行分析计算。在这个架构中,Apache Doris 承担了实时数据部分的计算和处理,还作为结果端直接输出数据给上游业务平台调用。

这一升级在系统上缩短了数据处理的路径,保证了大规模数据导入的时效性。此外,Apache Doris 的引入为上游应用层提供统一数据服务支持,这对于查询分析效率的提升至关重要。具体收益如下:

  • 便捷进行数据写入和迁移:Doris 支持丰富的数据导入形式,可轻松从不同的数据源中导入数据。其次,Doris 支持通过 insert into select 快速导入数据,无需进行繁重的数据迁移配置以及引入外部同步组件。
  • 统一数据服务,秒级查询响应:通过 Doris Multi-Catalog 功能,数据分析师可直接从 Doris 上查询数据,实现秒级别查询响应。其次,Doris Join 能力优异,对于超过 1000 万的结果表查询也可实现秒级返回结果。
  • 降低存储和计算成本:在早期架构中,使用 Flink 实时写入数据并进行压缩时需要消耗大量的计算资源。而引入 Apache Doris 后,借助 Doris ZSTD 压缩算法(3-5 倍压缩率提升),可有效降低计算和存储所需的资源,还可以将压缩处理流程放到 Doris 内部进行,无需消耗 Flink 计算资源。

从 T+1 到 T+0,实时数据提升智能驾驶体验

CAN 总线数据在车辆分析中扮演着关键的角色,通过 CAN 总线可以读取车辆的各种状态信息,例如车速、转速、水温等。这些数据对于分析车辆的行驶数据具有重要的价值,为整车研发单位提供宝贵的参考信息。

在早期架构中,车辆 CAN 数据是按照 CAN ID 作为维度进行上传的,而在实际使用中,通常需要将不同 CAN ID 的信号按照时间对齐形成一个宽表。过去的数仓架构解决方案会先将 Kafka 中的数据写入到 Hive,此时不同 CAN ID 的数据被存储在不同的行中,需要使用 SparkSQL T+1 将数据转换为几个不同业务域的宽表。然而,这种计算方式耗时较长,SQL 语句难以维护,且数据的实时性较差。

在引入 Apache Doris 之后,我们在 Doris 中基于 Aggregate 聚合模型建立了业务域的宽表,将车辆和时间等作为主键,其他的信号字段都用REPLACE_IF_NOT_NULL定义。具体如下:

长安汽车车联网-实时数据.jpg

首先,可以使用 Flink 来消费 Kafka 中按 CAN ID 维度的数据,在 Flink 中根据业务域宽表的配置对数据进行分流,将同一个 CAN ID 上的信号分配到相应的业务域宽表中。当同一个车辆在同一时间内不同 CAN ID 的数据到达同一个业务域宽表时,可以将这些数据填充到同一行中的不同 CAN ID 的信号数据字段中,实现宽表的构建(如上图 Doris 的表示例)。

在这种方式中,主要通过 Flink 对数据进行分流,将数据发送到不同的 Doris 业务域宽表中(每个宽表约有 200 个字段)。宽表的生成逻辑被放在了 Doris 中,而不是在 Flink 中进行宽表对齐的操作。这样设计的原因是不同 CAN ID 的数据上传存在一定的时间差,时间窗口过大时,使用 Flink 根据车辆和时间进行聚合可能会导致资源开销过高。

通过以上方案,可以将数据的新鲜度从 T+1 提高到 T+0 。同时,对于包含约 10 亿行数据的宽表,可以达到秒级的查询效率,即在进行单车查询时,可以快速地获取查询结果。

10 亿级别 DTC 故障码实时查询,保障车辆驾驶安全

DTC 属于 CAN 数据中的故障报文,因此对其进行单独的业务数据存储。每天的 DTC 数据量级可以达到 10 亿条,为了让业务端便捷高效的使用这些数据,快速进行故障诊断,提升车辆安全性,需要将 DTC 故障码明细数据与一张 MySQL 业务配置表进行关联。

在早期架构中,开发人员每天都需要将海量 DTC 数据先写入到 Kafka 中,然后通过 Flink 进行实时处理,并将结果存储到 Hive 中。而这种处理方式存在一些问题:

  • 面对 10 亿级数据量的表,难以将其导入 MySQL 进行实时查询。如果直接查询 Hive,则查询反馈时间会非常长,难以满足业务需求。
  • 由于无法直接关联 MySQL 的配置表,不得不定时将配置表导入 Hive 数仓。这样做虽然能够满足数据处理的需求,但却丢失了 DTC 配置的实时性。

长安汽车车联网-实时查询.jpg

在引入 Apache Doris 后,采用上图所示处理方式成功解决了早期架构存在的问题。首先将 Hive 的 DTC 明细数据通过 HDFS 文件导入的方式导入到 Doris 中,然后创建对应的 MySQL Catalog 连接,最后使用后端 Java 通过 MyBatis 连接 Doris 数据库,并使用 SQL 通过 Catalog 连接 MySQL 的 DTC 配置表进行 Join 操作,可直接实时查询返回结果。

通过 Apache Doris 成功完成了 10 亿级别数据的实时查询,并且可以对关联的 MySQL 配置表进行直接关联查询,成功实现了配置的实时更新。

总结与规划

凭借 Apache Doris 卓越的性能,目前在长安汽车已经部署数十台机器,支撑了近十条业务线,每天处理数据规模达到百亿级别。 Apache Doris 的引入为长安汽车在提升用户用车体验、实时预警车辆故障、保证车辆安全驾驶等方面带来显著成果,为其在智能化方向的技术创新提供了有力支持。

未来,长安汽车将进一步将 Apache Doris 应用在标签和指标业务,实现以下需求:

  • 自动识别冷热数据:将热数据存储在 Apache Doris 中,冷数据存储在 Hive 中,通过这种方式实现更高效的数据访问和管理。
  • 扩大业务范围:对现有的 Doris 业务 SQL 代码进行优化,利用 Doris 的某些特性和功能,将适合这些特性的业务迁移到 Doris 中,从而提高数据处理和查询的效率。
  • 共建社区:积极尝试使用 Doris 最新版本及新功能,在与社区保持同步的同时,不断探索和应用新的技术,反哺社区、为社区发展做出贡献。

最后,衷心感谢 Apache Doris 社区和飞轮科技技术团队的积极支持,期待未来与大家继续深入合作,推动长安汽车智能化发展,为用户提供更好的驾车体验!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1213059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

邮件钓鱼-邮件来源伪造-SPF绕过-setoolkitgohishswaks钓鱼

0x00 SPF简介 SPF即发送方策略框架,某种邮件服务器会有自己的SPF策略设定,可以设定SPF为只允许某些主机发送邮件等,当设定后第三方就无法伪造成邮件服务器的管理员对用户下发邮件。 是否存在SPF的验证: linux下:dig…

Servlet 常见的API

文章目录 写在前面Smart Tomcat 插件Servlet 中常见的API1. HttpServletinit 方法destroy 方法service 方法Servlet 的生命周期 使用 postman 构造请求使用 ajax 构造请求2. HttpServletRequest3. 前端给后端传参1). GET, query string2). POST, form3). json 4. HttpServletRe…

文件包含学习笔记总结

文件包含概述 ​ 程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。 ​ 程…

如何挑选护眼灯?光照均匀度、色温、眩光这3点!

光照环境对我们的生活质量影响深远,尤其在孩子的成长过程中,良好的光照环境对其学习效率、视力保护都至关重要。光照中的很多因素都对视力有着或大或小的影响,本文将从光照均匀度、眩光、色温三个关键点,深入浅出地让消费者了解其…

一键帮您解决win11最新版画图工具难用问题!

🦄个人主页:修修修也 ⚙️操作环境:Windows 11 正文 自从win11更新后,新版的画图工具变得非常难用,如: 使用橡皮擦后露出背版马赛克 框住某部分拖动移动时背景露出马赛克剪贴板上图片信息无法直接插入到画图板 目前没有一个好一些的能够在软件内部解决这些问题的方…

一家公司做了两年软件测试,只会功能测试,现在已经感到危机感了,那如何摆脱困境呢?

经常听到一些行业内的朋友说 “做测试,有手就行” 但事实真的是如此嘛? 随着测试行业的发展,越来越多的测试岗位对自动化测试,性能测试都有所要求,这对于很多只会功能测试的职场老人们来说,有了一丝丝的…

一个用于操作Excel文件的.NET开源库

推荐一个高性能、跨平台的操作Excel文件的.NET开源库。 01 项目简介 ClosedXML是一个.NET第三方开源库,支持读取、操作和写入Excel 2007 (.xlsx, .xlsm)文件,是基于OpenXML封装的,让开发人员无需了解OpenXML API底层API&#xf…

神经网络常见评价指标AUROC(AUC-ROC)、AUPR(AUC-PR)

神经网络的性能可以通过多个评价指标进行衡量,具体选择哪些指标取决于任务的性质。以下是神经网络中常见的评价指标: 准确性(Accuracy): 准确性是最常见的分类任务评价指标,表示模型正确预测的样本数占总样…

从真实案例出发,全方位解读 NebulaGraph 中的执行计划

本文整理自 NebulaGraph 核心开发 Yee 在直播《聊聊执行计划这件事》中的主题分享。分享视频参见 B站:https://www.bilibili.com/video/BV1Cu4y1h7gn/ 一条 Query 的一生 在开始正式地解读执行计划之前,我们先来了解在 NebulaGraph 中,一条…

使用MathType将文献中的数学公式进行转换

mathtype将文献中的数学公式进行转换 文章目录 mathtype将文献中的数学公式进行转换一、截图识别二、MathType下载与设置2.1、MathType介绍2.2、[下载位置](http://www.51xiazai.cn/soft/5975.htm)2.3、设置 三、使用MathType: 一、截图识别 这两个在线网站都可以将…

【云栖2023】姜伟华:Hologres Serverless之路——揭秘弹性计算组

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:姜伟华 | 阿里云计算平台事业部资深技术专家、阿里云实时数仓Hologres研发负责人 演讲主题:Hologres Serverless之路——揭秘弹性计算组 实时化成为了大数据平台的…

多种格式图片可用的二维码生成技巧,快来学习一下

将图片存入二维码是现在很常见的一种图片展现方式,有效的节省了图片占用内容空间以及获取图片内容的速度,所以现在会有很多人将不同的图片、照片生成二维码展示。如何使用图片二维码生成器来快速生成二维码呢?下面就让小编来给大家分享一下图…

入站一个月涨粉80万!B站竖屏UP主如何突出重围?

B站仍然秉持着“内容为王”的社区氛围,这也是众多UP主们一同坚持的事。不管是今年宣布的Story Mode竖屏模式开放还是14周年庆上B站董事长兼CEO陈睿宣布作品播放量改播放分钟数等等改动来看,都能感受到B站在向更多优质创作者招手,并维护着优质…

docker安装SMQTT

docker安装SMQTT smqtt介绍 官方地址: https://www.smqtt.cc/ 官方文档地址: https://wiki.smqtt.cc/docs/smqtt/ 一款高性能&开源的MQTT服务器,支持单机、容器化、集群部署,支持多种协议,具备低延迟,高吞吐量,…

15个顶级元宇宙游戏

元宇宙游戏是可让数百万玩家在一个虚拟世界中相互互动,允许你按照自己的节奏玩游戏,并根据自己的条件推广自己的品牌。 而且,这些游戏中的大多数都涉及虚拟 NFT,它们是完全独特的和虚拟的。在 Facebook 将品牌重新命名为“Meta”…

【C++】泛型编程 ② ( 函数模板与普通函数区别 )

文章目录 一、函数模板与普通函数区别1、函数模板与普通函数区别2、代码示例 - 函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别 : 主要区别在于它们能够处理的 数据类型数量 和 灵活性 ; 自动类型转换 : 函数模板 不允许…

深入理解 pytest Fixture 方法及其应用!

当涉及到编写自动化测试时,测试框架和工具的选择对于测试用例的设计和执行非常重要。在Python 中,pytest是一种广泛使用的测试框架,它提供了丰富的功能和灵活的扩展性。其中一个很有用的功 能是fixture方法,它允许我们初始化测试环…

PDF自动打印

​ 最近接到用户提过来的需求,需要一个能够自动打印图纸的功能,经过几天的研究整出来个初版了的,分享出来给大家,希望能有帮助。 需求描述: ​ 生产车间现场每天都有大量的图纸需要打印,一个一个打印太慢了&#xff0…

【C++面向对象】10. 多态

文章目录 【 前言 】【 虚函数 】【 纯虚函数 】 【 前言 】 多态按字面的意思就是多种形态。当 类之间存在层次结构,并且类之间是通过继承关联时 ,就会用到多态。 C 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数…

阿里云服务器租用价格,不同实例云服务器日常价、活动价与券后价格

阿里云服务器最新实际购买价格参考,轻量应用服务器2核2G3M带宽配置日常价720.00元/1年,最新活动价格为87元/1年,订单满300元以上即可使用满减优惠券,例如经济型e实例2核4G2M带宽日常价格为1802.40元,最新的活动价格为8…