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

导读:随着消费者更安全、更舒适、更便捷的驾驶体验需求不断增长,汽车智能化已成必然趋势。长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构,专注于汽车智能化技术的创新与研究。为满足各业务部门的数据分析需求,长安汽车基于 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.mzph.cn/news/143219.shtml

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

相关文章

【广州华锐互动】消防科普VR实训展馆增强群众学习兴趣和沉浸感

在现代社会,科技的发展已经深入到我们生活的各个角落,其中包括教育和信息传播领域。3D技术的引入为科普教育提供了全新的可能性。特别是在消防安全教育中,消防科普VR实训展馆的应用,不仅可以提高公众的消防安全意识,还…

用户画像与用户分层

用户画像是重要的数据产品和运营抓手,指能够描述和刻画用户信息和的数据指标。通过用户画像,业务经营团队可以充分、深入、准确地了解用户在不同生命周期的特征,来制定高效的用户经营策略。用户画像,不论 Persona 还是 Profile &a…

C#多线程的操作

文章目录 1 使用线程意义2 C#线程开启的四种方式2.1 异步委托开启线程2.2 通过Thread类开启线程2.3 通过线程池开启线程2.4 通过任务Task开启线程 3 前台线程和后台线程简述3.1 前台线程3.2 后台线程 4 简述Thread和Task开启线程的区别4.1 Thread效果展示4.2 Task效果展示4.3 区…

WP光电信息学院2023年网络安全季度挑战赛-测试赛

签个到就跑WP Misc MISC-没爱了,下一个 下载附件压缩包解压之后,获得一个流量包文件 使用wireShark打开流量包,Ctrl F 搜索flag{即可获得flag flag{Good_b0y_W3ll_Done}MISC-送你一朵小花花 下载附件压缩包解压之后,获得一…

普通测径仪升级的智能测径仪 增添11大实用功能!

普通测径仪能对各种钢材进行非接触式的外径及椭圆度在线检测,测量数据准确且无损,可测、监测、超差提示、系统分析等。在此基础上,为测径仪进行了进一步升级制成智能测径仪,为其增添更多智能化模块,让其使用更加方便。…

element 周选择器el-date-picker

2023.11.13今天我学习了在使用element 周选择器的时候&#xff0c;我们会发现默认的时间选择为星期日到下一个星期一&#xff0c;如图&#xff1a; 我们需要改成显示星期一到星期天&#xff0c;只需要加一行代码&#xff1a;picker-options <el-date-pickertype"week&…

【postgresql】 代替mysql的if函数

在postgresql 中用 COALESCE 来代替mysql中的 if &#xff1b; COALEASE 函数的语法如下&#xff1a; COALESCE(expression_1, expression_2, expression_3, ...) COALESCE 函数接受多个参数&#xff0c;并且返回第一个非空的参数值&#xff1b; 如果所有参数都为空值&…

一本了解生成式人工智能

上周&#xff0c;发了一篇关于大语言模型图数据库技术相结合的文章&#xff0c;引起了很多朋友的兴趣。当然了&#xff0c;这项技术本身就让俺们很兴奋&#xff0c;比如我就是从事图研发的&#xff0c;当然会非常关注它在图领域的应用与相互促就啦。 纵观人类文明历史&#xff…

【论文精读2】R-MVSNet

R-MVSNet【递归多视图立体网络】&#xff0c;论文全名&#xff1a;“Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference”&#xff0c;CVPR 2019(CCF A) 在MVSNet的基础上做了一些改进&#xff0c;主要解决的问题是代价体正则化&#xff08;Cost Volume…

三、Eureka注册中心

目录 一、作用及调用方式 二、搭建eureka注册中心 三、注册user-service和order-service 四、新增实例 五、服务拉取 六、总结 一、作用及调用方式 在服务提供者启动时&#xff0c;它会向eureka注册中心提供自己的信息&#xff0c;并每30秒进行一次刷新eureka注册中心保存…

ping: www.baidu.com: Name or service not known解决办法

解决服务器无法ping通外网问题 1、问题描述&#xff1a; 配置了网卡信息&#xff0c;发现还是无法访问外网&#xff0c;并报ping: www.baidu.com: Name or service not known信息 2、问题原因&#xff1a; 这就是外网没开通好 3、解决方法&#xff1a; 修改网卡文件&#xff…

易货:一种古老而有效的商业模式

在当今的商业世界中&#xff0c;我们常常听到关于电子商务、互联网和社交媒体等新技术的讨论。然而&#xff0c;尽管这些新技术为我们的日常生活带来了许多便利&#xff0c;但它们并没有完全取代传统的商业模式。其中&#xff0c;易货模式是一种古老而有效的商业模式&#xff0…

Python爬虫程序网络请求及内容解析

以下是一个简单的Python爬虫程序&#xff0c;用于爬取商户的内容。这个程序使用了requests和BeautifulSoup库来进行网络请求和内容解析。 import requests from bs4 import BeautifulSoup# 爬虫爬虫IP信息 proxy_host duoip proxy_port 8000# 请求URL url 目标网站# 创建一个…

docker-compose 部署 MySQL 8

目录 前言MySQL 配置文件(my.cnf)docker-compose.yml安装卸载 前言 Windows/Linux 系统通过 docker-compose 部署 MySQL8.0。 MySQL 配置文件(my.cnf) # 服务端参数配置 [mysqld] usermysql # MySQL启动用户 default-storage-engineINNODB # 创建新表时…

HTTP代理与SOCKS5代理,有什么区别?

在数字通信领域&#xff0c;数据安全和匿名性都是非常重要的指标。互联网的不断发展催生了几种协议&#xff0c;每种协议都有独特的优势和挑战。其中&#xff0c;SOCKS5 代理、HTTP代理最为广泛使用&#xff0c;下面给大家一起讨论&#xff0c;HTTP代理与SOCKS5代理&#xff0c…

POE也收费了

一直通过POE在用chatgpt&#xff0c;今天下午发现要收费了…

开发知识点-Vue-Electron

Electron ElectronVue打包.exe桌面程序 ElectronVue打包.exe桌面程序 为了不报错 卸载以前的脚手架 npm uninstall -g vue-cli安装最新版脚手架 cnpm install -g vue/cli创建一个 vue 随便起个名 vue create electron-vue-example (随便起个名字electron-vue-example)进入 创建…

ai语音电销机器人电销行业要怎么降低封号率?

工信部对电话营销电话的管控越来越严格&#xff0c;企业电销行业的发展受到了很多限制&#xff0c;因为电话销售人员在进行销售工作的时候&#xff0c;经常会因为各种原因触发封号机制&#xff0c;导致手机卡号被封&#xff0c;那企业电销行业要怎么降低封号率&#xff1f; 很多…

vue+iView实现下载zip文件导出多个excel表格

1&#xff0c;需求&#xff1a;在vue项目中&#xff0c;实现分月份导出多个Excel表格。 点击导出&#xff0c;下载zip文件&#xff0c;解压出多张表数据。 2&#xff0c;关键代码&#xff1a; <Button class"export button-style button-space" click"ex…

ssm823基于ssm的心理预约咨询管理系统的设计与实现+vue

ssm823基于ssm的心理预约咨询管理系统的设计与实现vue 交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————