梁 奕 李 立 宋真祥
(國電南瑞科技股份有限公司研發中心,210061,南京∥第一作者,高級工程師)
基于分布式流計算的路網指揮中心系統數據處理技術
梁 奕 李 立 宋真祥
(國電南瑞科技股份有限公司研發中心,210061,南京∥第一作者,高級工程師)
城市軌道交通路網指揮中心系統要求針對分布式環境、種類繁多的海量數據進行整合。根據數據ETL(Extract-Transform-Load)理論知識和路網指揮中心數據的實際特點,運用分布式流計算技術,結合Storm平臺下的Spout-Bolt工作機制,設計了一個適用于業務系統數據源的分布式流計算ETL框架。介紹了模塊的功能及數據處理過程。利用分布式流計算ETL框架,可充分滿足多業務場景下的數據處理需求,提高了數據的實時性和系統的橫向擴展能力。
城市軌道交通;路網指揮中心;數據處理技術
Author's address R&D Center,NARI Technology Co.,Ltd.,210061,Nanjing,China
城市軌道交通路網指揮中心系統要將分散的線路自動化系統聯結為一個有機的整體,以提高各系統的協調配合能力。這就要求對分布式環境、種類繁多的海量數據進行整合。如何整合這些數據成為路網指揮中心系統的研究熱點。數據倉庫技術可以保證數據的準確性、一致性和綜合性,可以為后續的聯機查詢、數據挖掘等工作提供可靠統一的數據源。因此,引入數據倉庫技術是實現路網指揮中心系統數據集成的最優方案之一。
數據萃取、轉換和加載(Extract-Transform-Load,簡為ETL)是構建數據倉庫的必經過程。在路網指揮中心系統方面,傳統的ETL工具很難對大規模高并發的監控數據進行有效的數據整合工作,且不能保證數據倉庫的實時性、數據安全性及ETL工具的可靠性。因此,為了可以快速準確整合路網指揮中心系統產生的各類數據,分布式流計算技術的使用是獲取最佳性能和高擴展性的關鍵所在,具有較高的研究價值。
Storm是Twitter公司開發的分布式的、可伸縮的、容錯的實時流計算系統。其并行計算及實時計算的特性,很好地滿足了路網指揮中心數據ETL的實際需求。Storm流處理平臺可以直接處理實時進入系統的任何數據流,具有如下優點:可橫向擴展,支持動態增加集群工作節點以提高整體的并發計算能力;布置安裝簡單;無狀態的工作節點;獨有的消息追蹤框架可以實時監控集群中數據的流向;可靠的事務機制可以滿足不同級別的數據處理需求;支持多種編程語言進行開發。
Storm拓撲結構由Spout和Bolt組件構成(如圖1所示)。Spout組件用于處理集群的數據輸入,而后Spout將數據傳遞給名為Bolt的組件,后者將以某種方式處理這些數據。例如Bolt以某種存儲方式持久化這些數據,或者將它們傳遞給另外的Bolt。
2.1路網指揮中心數據分析
一般線路業務系統中通用的關系數據庫模型比較簡單實用。在此模型中,設備綜合維度表的主鍵為綜合數據表的外鍵引用(如圖2所示)。
圖1 Storm拓撲結構示例
圖2 業務系統數據源模型圖
在數據規模大時,綜合數據表會呈現出爆炸式的增長,從而導致系統查詢效率極其低下,無法適應路網中心的大數據規模。而傳統的索引等方式已不能解決數據庫設計本身存在的缺陷。
在數據倉庫建模設計時,已充分考慮上述數據特點,采用水平分表結合星型模型的方式來構建數據倉庫模型。具體做法為:①將綜合數據表的數據按功能進行分類,再通過分類信息維度表將數據記錄分散至各類事實表。②每類事實表再根據具體特性,設計其私有的維度表。通過這種方式,不僅能快速地將事實表的數據級別從千萬級降至了百萬級,而且利用維度表特性和類似于垂直分表的思想解決了大量的數據冗余問題。典型的數據倉庫模型如圖3所示。
碼位事實表是實際接收數據源增量數據的數據表,而設備類型維度表、測點位置維度表及設備參數維度表都可以看作是定義表。在第一次完全加載后,如無特殊情況則定義表的數據量不會產生明顯變化。在碼位事實表中,所有增量數據可通過數據源中的對應字段直接獲取,而所屬位置鍵、所屬設備鍵及參數維度鍵則可通過數據源中的設備綜合維度表進行獲取。通過ETL轉換至數據倉庫后,整個設計就顯得合理得多,可以更好地為后續的數據挖掘、聯機分析等作數據支持。
圖3 數據倉庫數據模型圖
2.2系統總體架構設計
本文根據路網指揮中心的需求,提出了一種分布式流計算ETL框架。該框架從線路監控實際產生數據的源頭出發,利用Storm流處理平臺強大的分布式及實時處理能力,將傳統的ETL過程轉化為通過流計算編程的方式實現并行ETL過程,從而提高了ETL過程中的轉換效率及處理能力。分布式流計算ETL框架是基于Storm平臺而設計的,以Storm作為執行平臺,以Redis作為臨時存儲區,以ORACLE數據庫作為數據倉庫。其框架體系結構如圖4所示。
圖4 分布式流計算ETL框架體系結構
從圖4中可以看出,分布式流計算ETL框架既可處理關系型數據,又可支持短時高并發數據流寫入的業務場景。分布式流計算ETL框架由數據萃取、數據轉換和數據加載三個主模塊構成。其中數據萃取模塊對應于傳統Storm拓撲結構中的Spout組件,數據轉換模塊和數據加載模塊對應于Bolt組件。
2.2.1數據萃取模塊
(1)XML適配器:其主要功能是解決ETL數據萃取需求環節中的確認數據源需求,XML適配器采用XML配置文件的方式,在文件中對數據源及數據倉庫進行了配置。
(2)增量萃取模塊。處理增量數據的處理問題是ETL工具設計中的一個重點,主要使用讀取數據庫日志、時間戳、數據比較差異和觸發器加上數據變更記錄來捕獲數據源變化數據。
(3)觸發萃取引擎:主要針對于短時高并發的觸發器數據源而設計。引擎依賴于設備觸發器的數據獲取接口,結合Storm分布式流計算框架處理高并發業務場景的能力,通過多Spout適配不同設備的數據源,在拓撲設計時增加節點的并行度,從而提高觸發萃取的效率。
2.2.2數據轉換模塊
數據轉換過程是連接數據抽取過程與數據加載過程的紐帶,在ETL過程中起到決定性的作用,包括以下4個方面。
(1)空值處理:若在轉換過程中獲取到某些字段存在空值,則可按照定義將該字段的空值替換為預訂數值或者不作任何處理。
(2)格式化數據:根據業務數據源中各個字段的數據類型,進行數據格式的格式化化操作。例如,統一將數值類型轉化成字符串類型。
(3)數據重構:根據數據建模關系進行字段的拆分、合并等操作,是最為典型的ETL的轉換過程。
(4)數據過濾:根據數據建模關系對字段進行過濾,提取數據內容,進行拆分和合并操作,滿足業務規則要求。
2.2.3數據加載模塊
在分布式流計算ETL框架中,數據的加載主要為最初加載和增量裝載兩種裝載類型。最初加載主要利用批量加載引擎進行處理,增量裝載則使用批量加載引擎和實時加載引擎結合的方式進行處理。實時加載引擎可在該代碼基礎上進行優化,即將數據流中的每個數據元組直接入庫。其效率會稍低于批量加載引擎,但實時性較強。
通過上述建模過程得知,可利用星形模型對路網中心系統數據源及目標數據倉庫進行數據建模。本節將結合實際數據需求,給出基于分布式流計算ETL框架的對應解決方案。
業務系統ETL過程建模如圖5所示。要采集的業務系統數據源中,綜合數據表即事實表,用于存放監控系統業務數據;設備綜合維度表即維度表,用于存放采集設備的設備參數信息。通過采集業務系統數據源,將數據變為多種類型表的形式存放至數據倉庫中。實際的工作環節涉及復雜的表結構拆分、合并過程及表內字段拆分、合并過程。之后,源數據中的數據會按照預先設定的規則存儲至目標數據倉庫中。數據倉庫同樣使用星型模型進行建模。以信號設備的監測類型為例,其存儲監測數據的事實表為碼位事實表,而與之關聯的設備類型維度表、測點位置維度表和設備參數維度表可為其提供設備的多種參數定義信息。
圖5 業務系統ETL過程建模示意圖
圖6為分布式流計算ETL處理過程。在萃取階段,系統使用spout組件通過時間戳字段完成對綜合數據表的增量萃取工作。單spout即可支持上萬組數據的并發處理需求;擴展成多spout后,可橫向擴展系統的實際吞吐能力以支持不同數據規模下的實際需求。在轉換階段,使用并行的bolt對綜合數據表數據同時進行拆分、合并等工作,將數據緩存至Redis存儲引擎中,構建分類型數據表的數據集,并每隔一段時間將源數據轉化為目標數據倉庫所需的結果數據。在加載階段,系統使用并行的bolt將Redis存儲引擎中的結果數據持久化保存至數據倉庫中,并批量完成數據的持久化工作。
圖6 業務系統ETL分布式處理過程
整個ETL過程中,由于數據均處于內存,故避免了不必要的磁盤讀寫,將系統處理能力提高到最優。在Redis緩存引擎中加入了分布式流計算ETL獨有的數據持久化機制。這在保證數據安全的前提下,大大提高了數據的實時性。
本文結合數據ETL理論知識和城市軌道交通路網指揮中心數據的實際特點,運用分布式流計算技術,結合Storm平臺下的Spout-Bolt工作機制,設計了一個適用于業務系統數據源的分布式流計算ETL框架,并闡述了業務系統數據源在分布式流計算ETL框架中的具體實現過程。經過分析,利用分布式流計算ETL框架,可充分滿足多種業務場景下的數據ETL需求,并能在保證數據安全性的前提下,提高數據的實時性和系統的橫向擴展能力。
[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] 張延松.大規模可擴展數據分析技術研究[D].北京:中國人民大學信息學院,2010.
[7] 李玉建,馬子彥.城市軌道交通信息化規劃建設中主數據管理平臺的建設契機[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)