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