張 浩 石 琦 徐啟祿 朱東升
(1. 南瑞集團公司(國網電力科學研究院) 南京 210003; 2. 國電南瑞科技股份有限公司 南京 210061)
?
軌道交通領域大數據的關鍵技術研究
張 浩1,2石 琦1,2徐啟祿1,2朱東升1,2
(1. 南瑞集團公司(國網電力科學研究院) 南京 210003; 2. 國電南瑞科技股份有限公司 南京 210061)
介紹軌道交通領域綜合監控系統數據的存儲、提取及運算過程,并以北京、南京等為例分析當前存在的效率問題,提出采用map-reduce分布式運算以及窗口算法,解決中心大數據量信息處理的效率問題。介紹map-reduce算法原理以及窗口算法,對采用傳統方式解決大數據的同步問題進行分析,提出利用簡化的map-reduce任務分發解決軌道交通數據的處理效率問題,最后對其應用領域進行擴展,可推廣到軌道交通領域任何的分布式應用中。 關鍵詞 城市軌道交通;大數據;map-reduce;分布式運算;窗口算法;大數據量信息處理;運維指揮系統
軌道交通綜合監控系統由眾多的車站和中心構成,并且在每座車站都存在一個獨立的數據域,中心域是車站數據域的集合。對中心的數據處理通常從中心域獲取數據并處理,當中心的數據量達到一定程度(受車站數量、車站數據量、投運時間等影響),效率問題就會影響運營體會[1]。例如:南京地鐵3號線有29座車站,重慶地鐵3號線有39座車站,北京地鐵6號線有26座車站,正常情況下中心每天產生100萬條數據信息,如果運行時間為1年,那么查詢其中一天的數據會消耗多少時間?即使優化后的查詢也會碰到界面數據長時間無法被展示的困擾[2]。

MapReduce是現今一個非常流行的分布式計算框架,它被用于并行計算海量數據。第一個提出該技術框架的是Google 公司,而Google 的靈感則來自于函數式編程語言,如LISP、Scheme、ML等。MapReduce 框架的核心步驟主要分兩部分:map和reduce。當向MapReduce 框架提交一個計算作業時,它首先會把計算作業拆分成若干個map任務,然后分配到不同的節點上執行,每個map任務處理輸入數據中的一部分,當map任務完成后,會生成一些中間文件,這些中間文件將會作為reduce 任務的輸入數據。reduce 任務的主要目標就是把前面若干個map的輸出匯總到一起并輸出。從高層抽象來看,MapReduce的數據流圖如圖1所示。

圖1 MapReduce的數據流圖

2.2 窗口算法
本文的窗口算法是指設定指定大小的信息域,在對信息的整理過程中只對該區域內的信息進行處理,忽略對信息域外信息的一種優選算法,如圖2所示。

圖2 窗口算法實例
在傳統實現方式中,控制中心是一個大而全的數據集,不僅在車站本地保存1份數據,而且需要通過同步服務程序將數據同步到控制中心。當提交一個計算作業時,它直接從本地節點上執行并輸出結果[4]。
在該實現方式中,如何保證數據完全同步是系統設計的難點,例如骨干網中斷一段時間后恢復,需要保證數據不丟失,同時,由于需要保存2份數據,增加了系統的負擔。當控制中心提交多個并發計算作業時,由于這些計算作業都只能在本節點上處理,延長了并發計算時間[5]。

首先,軌道交通數據按域(車站)均勻分布;其次,軌道交通網絡結構固定;再次,軌道交通服務器對等,且運行服務統一;最后,軌道交通數據結構統一,且每個域都有相應的標識[7]。
由此可以看出,本設計執行條件:1) 所有節點具有等同的服務,只能處理本域的數據;2) 所有的結果數據均可以有序匯總為特定數量(窗口大小)的有效信息。符合以上兩點的,均可以采用本設計,不限于軌道交通領域。

圖3 map-reduce運算流程
本文所使用的窗口算法是一種簡化的窗口算法,因為從各節點獲取的信息組合已經是按規律排好的有序列表,所以相應的插入處理會變得更加簡單。詳細運算流程如圖3所示。
窗口算法的實現如圖4所示。以事件查詢為例,本文采用的做法是從車站而不是中心讀取數據[8]。首先客戶端發出帶有過濾條件的事件查詢指令,由運行在中心服務器上的事件服務程序將其拆解為統一的查詢過濾語句,并向對應的車站服務器發送請求,車站服務器根據請求訪問自己的商用數據庫,得到有序的事件列表并發給中心服務器,中心服務器根據車站服務器請求返回的順序,采用窗口算法按時間排序的信息將其整理為目標結果集,發送到窗口顯示。

圖4 窗口算法流程
由于本設計針對軌道交通獨有的網絡、數據、服務進行設計,因此可以類推到軌道交通領域任何的分布式應用,例如在TCC(運營指揮系統發包方)上面的擴展。
由于軌道交通運營指揮系統需要調度一個城市多條線路的信息,因此需要處置的數據將是超級龐大的,尤其是對北京、上海、廣州這樣的一線城市,由于其地鐵發展歷史較久,線路多,具有較大的指導意義[9]。
首先,避免將數據收集到統一的數據倉庫這一過程,不僅能夠減少硬件投入,而且可以充分利用現有線路的數據庫;其次,極大地提高了信息處理的速度,將對現代社會高效率處置突發事件產生巨大影響。但是由于多條線路由不同的運營商提供,所以在上一節提到的結構化數據可能會變成異構數據[10],那么需要由TCC提供統一的服務接口,通過線路服務提供方將異構數據轉換為結構化數據輸出。
采用該方法的主要特點是:充分整合現有線路服務器的資源,降低中心服務器的負荷;完全使用分布式的數據存儲,簡化數據同步過程;將集中式的任務進行分布式處理,極大提高數據的處理效率,提升車站服務器的利用率以及中心服務器的處理效率。
[1] 畢湘利,宋鍵.從效率角度談城市軌道交通的規劃、建設和運營[J].城市軌道交通研究,2007(10):1-5.
[2] 徐玉萍,覃功,張正.城市軌道交通調查大數據應用研究[J].鐵道運輸與經濟,2015(4):78-81.
[3] TOM white.Hadoop權威指南(中文版)[M].北京:清華大學出版社,2011.
[4] 嚴勝.智能電網變電站集中監控告警專家處理系統的研究與應用[J].中國科技信息,2009(17):25-27.
[5] 李亮.軌道交通電力監控中的拓撲分析[J].自動化儀表,2014(9):14-15.
[6] BENTLEY J.編程珠璣[M].北京:人民郵電出版社, 2008.
[7] 楊洪.地鐵綜合監控系統數據信息量及服務器配置方式討論[J].信息技術與應用,2015(6):17-20.
[8] 林曉偉.地鐵綜合監控人機界面的設計與實現[J].工業控制計算機,2010,23(12):13-14.
[9] 陳建譯.鐵路運輸調度管理系統與列車調度指揮系統信息共享的實現[J].中國鐵路,2010(2):53-55.[10] 封博卿,趙靜,常慧輝,等.軌道交通應急指揮多源異構數據的融合方法[J].鐵路計算機應用,2012,21(5):61-63.
(編輯:王艷菊)
Research on Key Technologies of Large Data in the Field of Rail Transit
Zhang Hao1,2Shi Qi1,2Xu Qilu1,2Zhu Dongsheng1,2
(1. NARI Group Corporation (State Grid Electric Power Research Institute), Nanjing,210003;2. NARI Technology Co., Ltd., Nanjing, 210061)
The paper introduces the process of data storage, extraction and operation of the integrated monitoring system in the field of metro and takes Beijing and Nanjing as examples to illustrate the current efficiency problems. The map-reduce distributed computing and window algorithm have been put forward to solve this problem. After introducing the map-reduce algorithm principle and window algorithm, and analyzing the traditional way to solve the problem of large data synchronization, it proposes to use simplified map-reduce task distribution to handle this issue. This method could be applied to any rail transit field of distributed applications.Key words: urban rail transit; large data; map-reduce; distributed computing; window algorithm; huge data quantity information processing; rail transport operation and maintenance command system
10.3969/j.issn.1672-6073.2016.06.002
2016-04-05
2016-05-09
張浩,男,碩士,工程師,從事軌道交通自動化研究工作,zhanghaohzxt@163.com
U231
A
1672-6073(2016)06-0008-03