長安汽車基於 Apache Doris 的車聯網資料分析平臺建設實踐

SelectDB發表於2023-11-15

本文導讀 隨著消費者更安全、更舒適、更便捷的駕駛體驗需求不斷增長,汽車智慧化已成必然趨勢。長安汽車智慧化研究院作為長安汽車集團有限責任公司旗下的研發機構,專注於汽車智慧化技術的創新與研究。為滿足各業務部門的資料分析需求,長安汽車基於 升級了車聯網資料分析平臺,支撐單日百億級別資料實時處理,並實現十億級別資料查詢秒級響應,為長安汽車在提升使用者用車體驗、實時預警車輛故障、保證車輛安全駕駛等方面帶來顯著成果,為其在智慧化方向的技術創新提供了有力支援。

作者|長安汽車智慧化研究院


智慧化是汽車工業程式中的一場革命,它旨在利用大資料、人工智慧、雲端計算、物聯網等前沿數字技術,對汽車裝置和系統的執行狀態進行全方位的感知、分析、決策和控制,從而提高汽車的安全性、舒適性、便捷性和節能性。

長安汽車智慧化研究院作為長安汽車集團有限責任公司旗下的研發機構,專注於汽車智慧化技術的創新與研究,其願景是透過持續創新和技術突破,實現汽車智慧駕駛、智慧網聯和智慧交通的全面發展,為消費者提供更安全、更便捷、更智慧的出行體驗,並致力於成為中國汽車智慧化領域的領軍企業。
實現汽車智慧化的關鍵之一,是需要建立穩定、高效的資料平臺,以承載和利用海量的車聯網資料。作為智慧化發展的重要支撐,長安汽車智慧化研究院肩負著整個長安汽車集團車聯網資料的匯聚、處理和應用工作。為滿足各業務部門提出的資料支援需求,目前已經構建了車聯網資料分析平臺,並在業務指標分析、質量管理系統、智慧能耗、智慧診斷、智慧運營等多個重點領域實現資料應用。
本文將詳細介紹長安汽車車聯網資料分析平臺的演進歷程及實踐經驗, 分享長安汽車基於 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 為核心構建了資料平臺架構,所處理資料包括車輛 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 車聯網資料分析平臺


在新的車聯網資料分析平臺中,透過 Flink 結合 Doris 的 Stream Load 功能,可直接將 Kafka 資料實時寫入 Doris,同時,利用 Doris Broker Load 功能可以將 Hive 中資料匯入到 Doris 中進行分析計算。在這個架構中,Apache Doris 承擔了實時資料部分的計算和處理,還作為結果端直接輸出資料給上游業務平臺呼叫。
這一升級在系統上縮短了資料處理的路徑,保證了大規模資料匯入的時效性。此外,Apache Doris 的引入為上游應用層提供統一資料服務支援,這對於查詢分析效率的提升至關重要。具體收益如下:

  • 便捷進行資料寫入和遷移 :Doris 支援豐富的資料匯入形式,可輕鬆從不同的資料來源中匯入資料。其次,Doris 支援透過 insert into select 快速匯入資料,無需進行繁重的資料遷移配置以及引入外部同步元件。

  • 統一資料服務,秒級查詢響應 :透過 Doris Multi-Catalog 功能,實現資料服務的統一, 資料分析師可在 Doris 中 直接查詢 外部資料來源(如 MySQL、Iceberg、Hive 等 )資料,提高查詢效率,實現秒級別查詢響應。其次,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 定義。具體如下:

首先,可以使用 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 配置的實時性。

在引入 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 社群和 的積極支援,期待未來與大家繼續深入合作,推動長安汽車智慧化發展,為使用者提供更好的駕車體驗!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017904/viewspace-2995535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章