梁 奕 李 立 宋真祥
(國(guó)電南瑞科技股份有限公司研發(fā)中心,210061,南京∥第一作者,高級(jí)工程師)
基于分布式流計(jì)算的路網(wǎng)指揮中心系統(tǒng)數(shù)據(jù)處理技術(shù)
梁 奕 李 立 宋真祥
(國(guó)電南瑞科技股份有限公司研發(fā)中心,210061,南京∥第一作者,高級(jí)工程師)
城市軌道交通路網(wǎng)指揮中心系統(tǒng)要求針對(duì)分布式環(huán)境、種類(lèi)繁多的海量數(shù)據(jù)進(jìn)行整合。根據(jù)數(shù)據(jù)ETL(Extract-Transform-Load)理論知識(shí)和路網(wǎng)指揮中心數(shù)據(jù)的實(shí)際特點(diǎn),運(yùn)用分布式流計(jì)算技術(shù),結(jié)合Storm平臺(tái)下的Spout-Bolt工作機(jī)制,設(shè)計(jì)了一個(gè)適用于業(yè)務(wù)系統(tǒng)數(shù)據(jù)源的分布式流計(jì)算ETL框架。介紹了模塊的功能及數(shù)據(jù)處理過(guò)程。利用分布式流計(jì)算ETL框架,可充分滿(mǎn)足多業(yè)務(wù)場(chǎng)景下的數(shù)據(jù)處理需求,提高了數(shù)據(jù)的實(shí)時(shí)性和系統(tǒng)的橫向擴(kuò)展能力。
城市軌道交通;路網(wǎng)指揮中心;數(shù)據(jù)處理技術(shù)
Author's address R&D Center,NARI Technology Co.,Ltd.,210061,Nanjing,China
城市軌道交通路網(wǎng)指揮中心系統(tǒng)要將分散的線(xiàn)路自動(dòng)化系統(tǒng)聯(lián)結(jié)為一個(gè)有機(jī)的整體,以提高各系統(tǒng)的協(xié)調(diào)配合能力。這就要求對(duì)分布式環(huán)境、種類(lèi)繁多的海量數(shù)據(jù)進(jìn)行整合。如何整合這些數(shù)據(jù)成為路網(wǎng)指揮中心系統(tǒng)的研究熱點(diǎn)。數(shù)據(jù)倉(cāng)庫(kù)技術(shù)可以保證數(shù)據(jù)的準(zhǔn)確性、一致性和綜合性,可以為后續(xù)的聯(lián)機(jī)查詢(xún)、數(shù)據(jù)挖掘等工作提供可靠統(tǒng)一的數(shù)據(jù)源。因此,引入數(shù)據(jù)倉(cāng)庫(kù)技術(shù)是實(shí)現(xiàn)路網(wǎng)指揮中心系統(tǒng)數(shù)據(jù)集成的最優(yōu)方案之一。
數(shù)據(jù)萃取、轉(zhuǎn)換和加載(Extract-Transform-Load,簡(jiǎn)為ETL)是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的必經(jīng)過(guò)程。在路網(wǎng)指揮中心系統(tǒng)方面,傳統(tǒng)的ETL工具很難對(duì)大規(guī)模高并發(fā)的監(jiān)控?cái)?shù)據(jù)進(jìn)行有效的數(shù)據(jù)整合工作,且不能保證數(shù)據(jù)倉(cāng)庫(kù)的實(shí)時(shí)性、數(shù)據(jù)安全性及ETL工具的可靠性。因此,為了可以快速準(zhǔn)確整合路網(wǎng)指揮中心系統(tǒng)產(chǎn)生的各類(lèi)數(shù)據(jù),分布式流計(jì)算技術(shù)的使用是獲取最佳性能和高擴(kuò)展性的關(guān)鍵所在,具有較高的研究?jī)r(jià)值。
Storm是Twitter公司開(kāi)發(fā)的分布式的、可伸縮的、容錯(cuò)的實(shí)時(shí)流計(jì)算系統(tǒng)。其并行計(jì)算及實(shí)時(shí)計(jì)算的特性,很好地滿(mǎn)足了路網(wǎng)指揮中心數(shù)據(jù)ETL的實(shí)際需求。Storm流處理平臺(tái)可以直接處理實(shí)時(shí)進(jìn)入系統(tǒng)的任何數(shù)據(jù)流,具有如下優(yōu)點(diǎn):可橫向擴(kuò)展,支持動(dòng)態(tài)增加集群工作節(jié)點(diǎn)以提高整體的并發(fā)計(jì)算能力;布置安裝簡(jiǎn)單;無(wú)狀態(tài)的工作節(jié)點(diǎn);獨(dú)有的消息追蹤框架可以實(shí)時(shí)監(jiān)控集群中數(shù)據(jù)的流向;可靠的事務(wù)機(jī)制可以滿(mǎn)足不同級(jí)別的數(shù)據(jù)處理需求;支持多種編程語(yǔ)言進(jìn)行開(kāi)發(fā)。
Storm拓?fù)浣Y(jié)構(gòu)由Spout和Bolt組件構(gòu)成(如圖1所示)。Spout組件用于處理集群的數(shù)據(jù)輸入,而后Spout將數(shù)據(jù)傳遞給名為Bolt的組件,后者將以某種方式處理這些數(shù)據(jù)。例如Bolt以某種存儲(chǔ)方式持久化這些數(shù)據(jù),或者將它們傳遞給另外的Bolt。
2.1路網(wǎng)指揮中心數(shù)據(jù)分析
一般線(xiàn)路業(yè)務(wù)系統(tǒng)中通用的關(guān)系數(shù)據(jù)庫(kù)模型比較簡(jiǎn)單實(shí)用。在此模型中,設(shè)備綜合維度表的主鍵為綜合數(shù)據(jù)表的外鍵引用(如圖2所示)。
圖1 Storm拓?fù)浣Y(jié)構(gòu)示例
圖2 業(yè)務(wù)系統(tǒng)數(shù)據(jù)源模型圖
在數(shù)據(jù)規(guī)模大時(shí),綜合數(shù)據(jù)表會(huì)呈現(xiàn)出爆炸式的增長(zhǎng),從而導(dǎo)致系統(tǒng)查詢(xún)效率極其低下,無(wú)法適應(yīng)路網(wǎng)中心的大數(shù)據(jù)規(guī)模。而傳統(tǒng)的索引等方式已不能解決數(shù)據(jù)庫(kù)設(shè)計(jì)本身存在的缺陷。
在數(shù)據(jù)倉(cāng)庫(kù)建模設(shè)計(jì)時(shí),已充分考慮上述數(shù)據(jù)特點(diǎn),采用水平分表結(jié)合星型模型的方式來(lái)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)模型。具體做法為:①將綜合數(shù)據(jù)表的數(shù)據(jù)按功能進(jìn)行分類(lèi),再通過(guò)分類(lèi)信息維度表將數(shù)據(jù)記錄分散至各類(lèi)事實(shí)表。②每類(lèi)事實(shí)表再根據(jù)具體特性,設(shè)計(jì)其私有的維度表。通過(guò)這種方式,不僅能快速地將事實(shí)表的數(shù)據(jù)級(jí)別從千萬(wàn)級(jí)降至了百萬(wàn)級(jí),而且利用維度表特性和類(lèi)似于垂直分表的思想解決了大量的數(shù)據(jù)冗余問(wèn)題。典型的數(shù)據(jù)倉(cāng)庫(kù)模型如圖3所示。
碼位事實(shí)表是實(shí)際接收數(shù)據(jù)源增量數(shù)據(jù)的數(shù)據(jù)表,而設(shè)備類(lèi)型維度表、測(cè)點(diǎn)位置維度表及設(shè)備參數(shù)維度表都可以看作是定義表。在第一次完全加載后,如無(wú)特殊情況則定義表的數(shù)據(jù)量不會(huì)產(chǎn)生明顯變化。在碼位事實(shí)表中,所有增量數(shù)據(jù)可通過(guò)數(shù)據(jù)源中的對(duì)應(yīng)字段直接獲取,而所屬位置鍵、所屬設(shè)備鍵及參數(shù)維度鍵則可通過(guò)數(shù)據(jù)源中的設(shè)備綜合維度表進(jìn)行獲取。通過(guò)ETL轉(zhuǎn)換至數(shù)據(jù)倉(cāng)庫(kù)后,整個(gè)設(shè)計(jì)就顯得合理得多,可以更好地為后續(xù)的數(shù)據(jù)挖掘、聯(lián)機(jī)分析等作數(shù)據(jù)支持。
圖3 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模型圖
2.2系統(tǒng)總體架構(gòu)設(shè)計(jì)
本文根據(jù)路網(wǎng)指揮中心的需求,提出了一種分布式流計(jì)算ETL框架。該框架從線(xiàn)路監(jiān)控實(shí)際產(chǎn)生數(shù)據(jù)的源頭出發(fā),利用Storm流處理平臺(tái)強(qiáng)大的分布式及實(shí)時(shí)處理能力,將傳統(tǒng)的ETL過(guò)程轉(zhuǎn)化為通過(guò)流計(jì)算編程的方式實(shí)現(xiàn)并行ETL過(guò)程,從而提高了ETL過(guò)程中的轉(zhuǎn)換效率及處理能力。分布式流計(jì)算ETL框架是基于Storm平臺(tái)而設(shè)計(jì)的,以Storm作為執(zhí)行平臺(tái),以Redis作為臨時(shí)存儲(chǔ)區(qū),以O(shè)RACLE數(shù)據(jù)庫(kù)作為數(shù)據(jù)倉(cāng)庫(kù)。其框架體系結(jié)構(gòu)如圖4所示。
圖4 分布式流計(jì)算ETL框架體系結(jié)構(gòu)
從圖4中可以看出,分布式流計(jì)算ETL框架既可處理關(guān)系型數(shù)據(jù),又可支持短時(shí)高并發(fā)數(shù)據(jù)流寫(xiě)入的業(yè)務(wù)場(chǎng)景。分布式流計(jì)算ETL框架由數(shù)據(jù)萃取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載三個(gè)主模塊構(gòu)成。其中數(shù)據(jù)萃取模塊對(duì)應(yīng)于傳統(tǒng)Storm拓?fù)浣Y(jié)構(gòu)中的Spout組件,數(shù)據(jù)轉(zhuǎn)換模塊和數(shù)據(jù)加載模塊對(duì)應(yīng)于Bolt組件。
2.2.1數(shù)據(jù)萃取模塊
(1)XML適配器:其主要功能是解決ETL數(shù)據(jù)萃取需求環(huán)節(jié)中的確認(rèn)數(shù)據(jù)源需求,XML適配器采用XML配置文件的方式,在文件中對(duì)數(shù)據(jù)源及數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行了配置。
(2)增量萃取模塊。處理增量數(shù)據(jù)的處理問(wèn)題是ETL工具設(shè)計(jì)中的一個(gè)重點(diǎn),主要使用讀取數(shù)據(jù)庫(kù)日志、時(shí)間戳、數(shù)據(jù)比較差異和觸發(fā)器加上數(shù)據(jù)變更記錄來(lái)捕獲數(shù)據(jù)源變化數(shù)據(jù)。
(3)觸發(fā)萃取引擎:主要針對(duì)于短時(shí)高并發(fā)的觸發(fā)器數(shù)據(jù)源而設(shè)計(jì)。引擎依賴(lài)于設(shè)備觸發(fā)器的數(shù)據(jù)獲取接口,結(jié)合Storm分布式流計(jì)算框架處理高并發(fā)業(yè)務(wù)場(chǎng)景的能力,通過(guò)多Spout適配不同設(shè)備的數(shù)據(jù)源,在拓?fù)湓O(shè)計(jì)時(shí)增加節(jié)點(diǎn)的并行度,從而提高觸發(fā)萃取的效率。
2.2.2數(shù)據(jù)轉(zhuǎn)換模塊
數(shù)據(jù)轉(zhuǎn)換過(guò)程是連接數(shù)據(jù)抽取過(guò)程與數(shù)據(jù)加載過(guò)程的紐帶,在ETL過(guò)程中起到?jīng)Q定性的作用,包括以下4個(gè)方面。
(1)空值處理:若在轉(zhuǎn)換過(guò)程中獲取到某些字段存在空值,則可按照定義將該字段的空值替換為預(yù)訂數(shù)值或者不作任何處理。
(2)格式化數(shù)據(jù):根據(jù)業(yè)務(wù)數(shù)據(jù)源中各個(gè)字段的數(shù)據(jù)類(lèi)型,進(jìn)行數(shù)據(jù)格式的格式化化操作。例如,統(tǒng)一將數(shù)值類(lèi)型轉(zhuǎn)化成字符串類(lèi)型。
(3)數(shù)據(jù)重構(gòu):根據(jù)數(shù)據(jù)建模關(guān)系進(jìn)行字段的拆分、合并等操作,是最為典型的ETL的轉(zhuǎn)換過(guò)程。
(4)數(shù)據(jù)過(guò)濾:根據(jù)數(shù)據(jù)建模關(guān)系對(duì)字段進(jìn)行過(guò)濾,提取數(shù)據(jù)內(nèi)容,進(jìn)行拆分和合并操作,滿(mǎn)足業(yè)務(wù)規(guī)則要求。
2.2.3數(shù)據(jù)加載模塊
在分布式流計(jì)算ETL框架中,數(shù)據(jù)的加載主要為最初加載和增量裝載兩種裝載類(lèi)型。最初加載主要利用批量加載引擎進(jìn)行處理,增量裝載則使用批量加載引擎和實(shí)時(shí)加載引擎結(jié)合的方式進(jìn)行處理。實(shí)時(shí)加載引擎可在該代碼基礎(chǔ)上進(jìn)行優(yōu)化,即將數(shù)據(jù)流中的每個(gè)數(shù)據(jù)元組直接入庫(kù)。其效率會(huì)稍低于批量加載引擎,但實(shí)時(shí)性較強(qiáng)。
通過(guò)上述建模過(guò)程得知,可利用星形模型對(duì)路網(wǎng)中心系統(tǒng)數(shù)據(jù)源及目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行數(shù)據(jù)建模。本節(jié)將結(jié)合實(shí)際數(shù)據(jù)需求,給出基于分布式流計(jì)算ETL框架的對(duì)應(yīng)解決方案。
業(yè)務(wù)系統(tǒng)ETL過(guò)程建模如圖5所示。要采集的業(yè)務(wù)系統(tǒng)數(shù)據(jù)源中,綜合數(shù)據(jù)表即事實(shí)表,用于存放監(jiān)控系統(tǒng)業(yè)務(wù)數(shù)據(jù);設(shè)備綜合維度表即維度表,用于存放采集設(shè)備的設(shè)備參數(shù)信息。通過(guò)采集業(yè)務(wù)系統(tǒng)數(shù)據(jù)源,將數(shù)據(jù)變?yōu)槎喾N類(lèi)型表的形式存放至數(shù)據(jù)倉(cāng)庫(kù)中。實(shí)際的工作環(huán)節(jié)涉及復(fù)雜的表結(jié)構(gòu)拆分、合并過(guò)程及表內(nèi)字段拆分、合并過(guò)程。之后,源數(shù)據(jù)中的數(shù)據(jù)會(huì)按照預(yù)先設(shè)定的規(guī)則存儲(chǔ)至目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)中。數(shù)據(jù)倉(cāng)庫(kù)同樣使用星型模型進(jìn)行建模。以信號(hào)設(shè)備的監(jiān)測(cè)類(lèi)型為例,其存儲(chǔ)監(jiān)測(cè)數(shù)據(jù)的事實(shí)表為碼位事實(shí)表,而與之關(guān)聯(lián)的設(shè)備類(lèi)型維度表、測(cè)點(diǎn)位置維度表和設(shè)備參數(shù)維度表可為其提供設(shè)備的多種參數(shù)定義信息。
圖5 業(yè)務(wù)系統(tǒng)ETL過(guò)程建模示意圖
圖6為分布式流計(jì)算ETL處理過(guò)程。在萃取階段,系統(tǒng)使用spout組件通過(guò)時(shí)間戳字段完成對(duì)綜合數(shù)據(jù)表的增量萃取工作。單spout即可支持上萬(wàn)組數(shù)據(jù)的并發(fā)處理需求;擴(kuò)展成多spout后,可橫向擴(kuò)展系統(tǒng)的實(shí)際吞吐能力以支持不同數(shù)據(jù)規(guī)模下的實(shí)際需求。在轉(zhuǎn)換階段,使用并行的bolt對(duì)綜合數(shù)據(jù)表數(shù)據(jù)同時(shí)進(jìn)行拆分、合并等工作,將數(shù)據(jù)緩存至Redis存儲(chǔ)引擎中,構(gòu)建分類(lèi)型數(shù)據(jù)表的數(shù)據(jù)集,并每隔一段時(shí)間將源數(shù)據(jù)轉(zhuǎn)化為目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)所需的結(jié)果數(shù)據(jù)。在加載階段,系統(tǒng)使用并行的bolt將Redis存儲(chǔ)引擎中的結(jié)果數(shù)據(jù)持久化保存至數(shù)據(jù)倉(cāng)庫(kù)中,并批量完成數(shù)據(jù)的持久化工作。
圖6 業(yè)務(wù)系統(tǒng)ETL分布式處理過(guò)程
整個(gè)ETL過(guò)程中,由于數(shù)據(jù)均處于內(nèi)存,故避免了不必要的磁盤(pán)讀寫(xiě),將系統(tǒng)處理能力提高到最優(yōu)。在Redis緩存引擎中加入了分布式流計(jì)算ETL獨(dú)有的數(shù)據(jù)持久化機(jī)制。這在保證數(shù)據(jù)安全的前提下,大大提高了數(shù)據(jù)的實(shí)時(shí)性。
本文結(jié)合數(shù)據(jù)ETL理論知識(shí)和城市軌道交通路網(wǎng)指揮中心數(shù)據(jù)的實(shí)際特點(diǎn),運(yùn)用分布式流計(jì)算技術(shù),結(jié)合Storm平臺(tái)下的Spout-Bolt工作機(jī)制,設(shè)計(jì)了一個(gè)適用于業(yè)務(wù)系統(tǒng)數(shù)據(jù)源的分布式流計(jì)算ETL框架,并闡述了業(yè)務(wù)系統(tǒng)數(shù)據(jù)源在分布式流計(jì)算ETL框架中的具體實(shí)現(xiàn)過(guò)程。經(jīng)過(guò)分析,利用分布式流計(jì)算ETL框架,可充分滿(mǎn)足多種業(yè)務(wù)場(chǎng)景下的數(shù)據(jù)ETL需求,并能在保證數(shù)據(jù)安全性的前提下,提高數(shù)據(jù)的實(shí)時(shí)性和系統(tǒng)的橫向擴(kuò)展能力。
[1] Singapore technologies electronics limited.traffic control centre(tcc)integrated information system for beijing urban railway network[R/OL].[2006-07-10][2015-08-01]http:∥www.stee.stengg.com/pdf/railway_systems/Beijing _TCC-Eng.pdf.
[2] ATHANASSOULIS M,CHEN S,AILAMAKI A,et al. MaSM:Efficient online updates in data warehouses[C]∥proc of the SIGMOD Int Conf on Management of Data.New York:ACM,2011:865.
[3] ZHAO L,SHI W.Research on optimization of application model based on storm[C]∥Software Engineering and Service Science(ICSESS),2014 5th IEEE International Conference on.IEEE,2014:248.
[4] SANFILIpp OS,NOORDHUIS p.Redis[EB/OL].[2015-01-27][2015-08-07].http:∥redis.io.
[5] ELLIOTT T.Why In-Memory Computing Is Cheaper And Changes Everything[EB/OL].(2013-04-17)[2014-06-18].http:∥timoelliott.com/blog/2013/04/201304170098. htm.
[6] 張延松.大規(guī)??蓴U(kuò)展數(shù)據(jù)分析技術(shù)研究[D].北京:中國(guó)人民大學(xué)信息學(xué)院,2010.
[7] 李玉建,馬子彥.城市軌道交通信息化規(guī)劃建設(shè)中主數(shù)據(jù)管理平臺(tái)的建設(shè)契機(jī)[J].城市軌道交通研究,2014(3):11.
Data Processing Technology in Traffic Control Centre Based on Streaming Computing
Liang Yi,Li Li,Song Zenxiang
TCC for urban rail transit network is demanded to integrate large scale,various types and distributed data. Based on the data ETL(extract transformload)theory and the practical characteristics of TCC system,the streaming computing method is used and combined with Spout Bolt Scheme on the Storm platform,a distributed ETL framework for streaming computing in TCC system is proposed. Then,the modula functions and data processing are introduced.This distributed ETL framework has better performance on data processing in multi service scenario,and improves the real-time capability and scalability of TCC system.
urban rail transit;traffic control centre(TCC);data processing technology
Tp 274
10.16037/j.1007-869x.2016.03.009
(2015-07-30)