中車青島四方機車車輛股份有限公司 張士存 顧 佳 安 帥
基于動車組車載WTD設備的數(shù)據(jù)實時接收和解析技術機制的研究與應用
中車青島四方機車車輛股份有限公司 張士存 顧 佳 安 帥
主要介紹Kafka和Spark流的處理機制,并且將兩者的優(yōu)勢結合起來對動車組WTD現(xiàn)車數(shù)據(jù)的實時接收和解析進行深入研究,最終形成實時傳輸+Kafka+Spark方式的數(shù)據(jù)接收與解析技術機制。此種機制加強了實時采集和處理動車組運行數(shù)據(jù)的能力,保證了數(shù)據(jù)接收和解析以及展示的實時性。
Kafka;Spark;接收;解析
為了高鐵更好、更快、更安全的發(fā)展,現(xiàn)在已經能夠通過車載WTD設備將動車組運行數(shù)據(jù)傳回地面,供地面預測與健康管理系統(tǒng)對列車進行實時監(jiān)測管理以及故障預測。然而目前動車組的位置、運行狀態(tài)和報警等數(shù)據(jù)采集速度和傳輸效率存在問題,數(shù)據(jù)傳輸較慢,不能保障數(shù)據(jù)實時采集和傳輸,需要加強數(shù)據(jù)的實時采集、實時解析和數(shù)據(jù)存儲能力,保障預測與健康管理系統(tǒng)的數(shù)據(jù)安全性。
針對該問題本論文提出了基于動車組車載WTD設備的數(shù)據(jù)實時接收和解析技術機制,以下簡稱為列車運行數(shù)據(jù)接收處理應用技術,該技術實現(xiàn)列車狀態(tài)數(shù)據(jù)的實時采集和處理,對列車狀態(tài)進行監(jiān)控和故障快速告警,保障列車的健康安全運行;該技術對車輛運行數(shù)據(jù)進行沉淀,為故障診斷、分析和運維決策提供穩(wěn)定、可靠地運營車輛數(shù)據(jù)服務。
基于動車組車載WTD設備的數(shù)據(jù)實時接收和解析技術機制具體為:數(shù)據(jù)采集程序以socket作為底層數(shù)據(jù)傳輸協(xié)議[1],實現(xiàn)鐵科與四方的實時數(shù)據(jù)傳輸,通過多并發(fā)處理技術,提高網卡的高利用率,提升整體數(shù)據(jù)采集效率,實時將采集到數(shù)據(jù)存儲在前置機上;Kafka實時到前置機讀取數(shù)據(jù)并將數(shù)據(jù)整理為數(shù)據(jù)流序列,并有序的提供給Spark實時數(shù)據(jù)處理程序[2];Spark實時解析流對接收到的數(shù)據(jù)進行清洗和解析,最終將解析后的數(shù)據(jù)存儲到Hbase中,供PHM系統(tǒng)對列車狀態(tài)進行實時展現(xiàn)。具體流程如圖1所示:
圖1 具體流程圖
以下將對此機制分步驟進行介紹:
1.原始數(shù)據(jù)實時接收
數(shù)據(jù)采集程序,以socket作為底層數(shù)據(jù)傳輸協(xié)議,實現(xiàn)鐵科與四方的實時數(shù)據(jù)傳輸;通過多并發(fā)處理技術,提高網卡的高利用率,提升整體數(shù)據(jù)采集效率;采用C語言自編解析程序,進行原始數(shù)據(jù)解析;解析后數(shù)據(jù)以socket數(shù)據(jù)流形式發(fā)送給Kafka,Kafka將數(shù)據(jù)流整理為數(shù)據(jù)流序列,并有序的提供給后端實時數(shù)據(jù)處理程序。
(1)從鐵科實時采集和接收車地數(shù)據(jù)和解析后的數(shù)據(jù);
(2)車地數(shù)據(jù)和解析后的數(shù)據(jù)轉成消息以及生成文件;
(3)通過Kafka平臺進行消息隊列的接收和分發(fā); Spark平臺接收消息后,進行實時數(shù)據(jù)處理,推送給前端,實現(xiàn)數(shù)據(jù)呈現(xiàn);
(4)通過FTP對文件進行采集,對文件進行處理,加載到關系型數(shù)據(jù)庫,進行數(shù)據(jù)校驗和、數(shù)據(jù)分析以及歷史數(shù)據(jù)查詢等。
2.數(shù)據(jù)實時解析
數(shù)據(jù)解析程序,以spark實時流程序+協(xié)議配置的方式對數(shù)據(jù)進行解析,將數(shù)據(jù)校驗規(guī)則、數(shù)據(jù)過濾規(guī)則、數(shù)據(jù)轉換規(guī)則、車地通訊協(xié)議等形成標準配置化文件,然后供spark流程序加載,最終按照標準的格式將數(shù)據(jù)解析,如編碼E28-310001,E28代表車型,31代表數(shù)據(jù)接口類型,0001表示對應協(xié)議中的1字節(jié)。
3.數(shù)據(jù)實時入庫
數(shù)據(jù)存儲程序將解析完的數(shù)據(jù)存入到Hbase中,一份存入到當前表中,以接口_列號_車號作為rowkey,實時數(shù)據(jù)會覆蓋掉歷史數(shù)據(jù),供系統(tǒng)參數(shù)實時展示使用;一份存入到歷史表中,以接口_列號_車號_時間作為rowkey,保留列車全部數(shù)據(jù)信息,供系統(tǒng)參數(shù)歷史查詢使用。
1.完成數(shù)據(jù)實時接收和解析,從接收到解析再到存儲用時不超過5秒,保證系統(tǒng)參數(shù)展示和查詢的實時性。
2.將數(shù)據(jù)解析后存入到Hbase中,以接口_列號_車號_時間為rowkey,以協(xié)議編碼為F_DATA或S_DATA,提高系統(tǒng)查詢效率。
通過對基于動車組車載WTD設備數(shù)據(jù)實時接收和解析技術機制在預測與健康管理系統(tǒng)中的研究與應用,了解kafka+spark數(shù)據(jù)接收和處理機制的原理和優(yōu)點。
隨著高鐵發(fā)展的日新月異,對列車數(shù)據(jù)監(jiān)控的實時性要求會越來越高,經過試驗本文論述的列車運行數(shù)據(jù)接收處理應用技術實時性很高,希望能夠為類似數(shù)據(jù)接收和處理提供一定的參考。
[1]Bertauski,Tony.The Training of Socket Greeny[M].Bertauski.2010:25-31.
[2]張俊林.大數(shù)據(jù)日知錄:架構與算法[M].電子工業(yè)出版社,2014.110-113.