李 丹,李丹寧,張 順
(貴州科學院,貴州 貴陽 550001)
基于QVT的流式大數據轉換研究
李 丹,李丹寧,張 順
(貴州科學院,貴州 貴陽 550001)
流式大數據呈現出實時、連續、無限等特征,類型繁雜,只能一次性順序處理。研究流式大數據的提取、變換、分析,具有較強的理論和應用價值。流式模型轉換利用模型驅動開發積累的方法、技術、標準和工具,從更高的抽象層次處理大數據流,是一個正在浮現的研究熱點領域。結合前期在模型轉換方面的工作,提出將OMG標準模型轉換語言QVT-R應用于流模型轉換,為流式大數據處理提供一個直觀簡潔、表達力強的全新方法,滿足大數據和物聯網產業發展的實際需要。
大數據;流式大數據處理;模型轉換;QVT
大數據呈現出規模性(Volume)、多樣性(Variety)、高速性(Velocity) 和價值(Value)的特點。很多大數據源,如網絡監控、物聯網上各種傳感器產生的實時數據等,呈現出鮮明的流式特征,數據量密集、實時性強、價值密度低,往往無法完全儲存起來,需要實時、高效地提取出有價值的信息。同時,大數據的多樣性意味著數據來源廣泛,類型繁雜。存在多層次、多方面的差異性,查詢處理時可能涉及到時間、地理坐標等,實時性要求高,且只能以“不落地”(on-the-fly)的方式處理。這種復雜的數據環境和處理要求給流式大數據的處理帶來極大的挑戰。構建高吞吐且持續可靠運行的大數據流式計算系統是當前亟待解決的問題,但目前研究成果和實踐經驗相對較少[1]。
理想的大數據流式處理系統應該表現出低延遲、高吞吐、持續穩定運行、動態負載均衡、彈性可伸縮及故障恢復等特性,需要對系統架構、數據傳輸、編程接口、數據處理及變換、高可用技術等關鍵技術的進行研究[1,2]。目前,在大數據流式計算架構方面已有一些工作,如Twitter的Storm系統、Berkeley的Spark Streaming、Yahoo的S4等。和傳統的集中式數據流管理系統不同,這些平臺都采用分布式架構,其處理能力可以隨節點數目的增長而擴展,具有良好的伸縮性、負載均衡、故障恢復、高可用性等。同時,平臺的基礎模塊與計算邏輯分離,平臺自身只完成底層數據傳輸、任務分配等工作,并不提供查詢、處理的語言支持,用戶需要自行完成處理流程和計算單元的定義。
因此,在形式化方法、模型驅動開發和模型轉換方法的基礎上,從更高的層次抽象大數據流,研究復雜流式大數據的數據模型、連續流處理語義、系統處理模式,開發相應的處理語言和算子,以用戶自定義計算單元的方式嵌入這些分布式流數據處理平臺中,即能利用框架在延遲性、吞吐量、動態負載均衡、彈性可伸縮等方面的優勢有效地處理復雜流式大數據。
數據流(data streams)是實時的、連續的、無限的海量數據序列,數據或其摘要信息只能按順序存取并被讀取一次或有限次[2]。而相應的流式計算(stream computing)指當數據流到來后在內存中直接進行數據的實時處理,增量式地返回結果。流式計算中,無法確定數據的到來時刻和到來順序,也無法將全部數據存儲起來[1]。
1.1 數據流處理技術
現有的數據流管理系統(Data Stream Management Systems,DSMSs)通常只提供簡單的查詢語言和算子,并提供帶有滑動時間窗口的類似于SQL的查詢語句,難以滿足對實時數據處理復雜度和實時性的要求,同時在語句豐富程度、查詢優化和調度方面也存在不足[1,2]。近年來,在語義流(Semantic Streams)、流推理(stream reasoning)、復雜事件處理(complex event processing,CEP)等方面的研究也取得了很大的進展,但仍然難以滿足對流式大數據處理的實際需要[3]。工業界和學術界提出的幾種CEP方法,定義復雜模式匹配規則過于簡單,不能明確地表達對于輸入事件的處理步驟,而是由模式本身隱含的決定[3]。同樣,CEP不能將數據流和背景數據集結合起來處理,對于處理現實中的復雜大數據流存在困難。
1.2 XML數據流處理技術
XML已成為互聯網上信息表示和數據交換的重要標準,不同種類的數據,如RDF數據,都可以用XML格式來表示,特別是類型繁雜、來源廣泛、極具多樣性的大數據。因此越來越多的數據源把它們產生的流式大數據進行包裝,以XML的格式通過網絡發布和交換,稱為XML數據流(XML data streams)。當前,對XML大數據流的處理需求急劇增長,如何高效、安全地處理XML數據流,成為大數據流式計算研究的重要部分[4]。目前對XML數據流的處理方法抽象程度低,使用復雜。而對如何從源數據流轉換生成不同結構和內容的目標數據流,特別是在涉及應用模型驅動開發和模型轉換技術方面,所做研究工作較少。
XML文檔轉換的標準語言XSLT在定義規則,模式匹配和處理結構化數據方面具備強大功能,得到廣泛的支持。2014年發布的XSLT 3.0標準草案[5]中,重點關注了XML文檔的流式轉換,為此引入了一系列新的構造子(constructs),提供了對流式轉換的良好支持,且目前已有處理器(processor),如Saxon 9.6、Exselt等,實現了XSLT 3.0流式轉換功能并支持多核、多線程。
1.3 流模型轉換技術
模型轉換(model transformations)是模型驅動開發的核心。數據轉換(data transformations)也是模型轉換的重要應用領域。數據集用元數據描述,而元數據可直接定義為數據模型,因此模型轉換技術可以用于數據轉換的工作。用戶為復雜的數據結構建模,定義轉換規則轉換到目標數據類型。但傳統的模型轉換技術將以批處理的方式進行,將模型作為一個整體讀入計算機內存,再進行處理和轉換,對流式模型(數據)的模型轉換技術研究較少。相關的技術,如增量式模型轉換(incremental model transformation)及變化驅動轉換(change-driven transformations),主要考慮當源模型發生少量變化時,如何只轉換變化部分,并將轉換結果合并到原有的目標模型,不能滿足轉換流式模型的要求。
由于流模型具有以下特點,現有的模型轉換方法并不能有效地處理流模型轉換[6]:
●無限模型(Infinite model):流模型轉換處理持續到來的模型片段。流模型轉換的輸入、輸出模型原則上都是無限的。
●處理引用(references):模型元素可能引用(通過標識或鍵值)已經被流式處理的模型片段,或可能指向將來再被處理的片段。
●轉換調度(scheduling):模型元素抵達時觸發并運行相應規則,但模型元素抵達的順序是未知的。需要某種機制來避免轉換的整個停止執行,并且當預期的元素到達后恢復規則的執行。
流模型轉換作為一種新型的模型轉換技術已經開始吸引研究者的注意。文獻[6]提出了流模型轉換(streaming model transformations), 將其定義為“一種特殊的模型轉換,在轉換開始時無法得到完整的輸入模型,而是在轉換過程中連續獲得”。同時實現了一個概念性的流模型轉換引擎,并進行了一些實驗性的流模型轉換工作。
2.1 QVT-R及XSLT技術
為滿足對通用模型轉換語言的需要,OMG提出模型轉換語言QVT (Query/View /Transformation)[7]標準。其中的QVT Relations (以下簡稱 QVT-R)是一種高級的聲明式(declarative)語言,是QVT 的核心。QVT-R的語言中,數據模型可以用UML類圖定義。復雜的查詢要求,涉及到模型導航(navigation)、集合操作、以及邏輯、數學、字符串操作等,可直觀地用QVT-R的模式表達,通過模式匹配尋找到相應的部分,滿足數據轉換中復雜的轉換要求,實現對模型結構變化的快速反應。而OMG發布的各項相關標準及眾多的開源、商用軟件,也為數據模型的建模、操縱提供了便利。當然,現有的QVT標準[7]并沒有涉及到流模型轉換,也不能處理無限模型。
為了支持QVT-R,我們提出了QVTR-XSLT方法[8,9],并開發出了原型支持工具。QVTR-XSLT支持QVT-R的圖形語法,通過映射到XSLT,支持QVT-R一個子集的運行。
XSLT 3.0 標準為支持XML文檔的流式轉換引入了一系列新的構造子(constructs)。其中,新的xsl:mode指令和xsl:stream指令可以將模版規則申明為對XML文檔進行流式處理。fn:snapshot指令復制節點及其祖先和后代,用于建立快照。而xsl:fork和xsl:merge能充分利用大規模計算機系統的并行能力高效地處理XML數據流。
2.2 基于QVT-XSLT的流模型轉換
我們對復雜大數據流進行抽象模型研究,并針對流模型轉換的特點對QVT-R的圖形語法進行擴展,包括定義無限模型的概念和對應操作,引入新的構造子(constructs)并定義其語法和語義,提出流轉換中規則調度的新算法等,使得QVT-R能夠用于流模型轉換。
我們還將擴展的QVT-R流轉換功能語義映射到XSLT 3.0的相應功能,通過引入并行計算、滑動窗口、二級儲存等手段提高流轉換的效率。進一步改進QVTR-XSLT方法,從方法和架構上實現對擴展的QVT-R流模型轉換的支持。
具體的技術路線如下:
(1)在擴展QVT-R支持流模型轉換中采用如下技術方案:
a)XML流模型以模型片段(fragments)為基本單位。片段可視為有根節點一顆獨立XML樹,包含有限元素,具有有限深度,大小適合調入內存,可對片段建立快照及緩存。
b)引入新QVT-R的構造子,包括將QVT-R轉換聲明為流轉換,將規則的源域模式聲明為片段匹配模式,跨片段引用的注明,當前片段的條件緩存等,并給出其語義。片段以流方式進行處理,但片段內的操作按正常方式進行。
c)為改進QVT-R的實用性對QVT-R進行擴展,包括增加轉換調用參數(parameters)使得同一個轉換能夠適用于不同的使用環境,增加規則別名及權重,以及增加條件規則調用等。
d)提出流轉換規則調度(rule scheduling)及緩存機制。QVT-R的規則調度通過when、where條款(clauses)進行,在where中顯式調用其它規則,而在when中給定的條件滿足后本條規則才能被觸發。規則中如果有跨片段引用,可作為規則的一種特殊when條件。規則執行中檢查緩存,如有不能滿足的跨片段引用,則將當前片段置入緩存,當前規則的運行放入等候列表(wait list),暫緩執行。當新的數據片段到達時,檢查等候列表,滿足條件的恢復執行。
e)提出QVT-R并行處理機制,將某些規則聲明為可并行處理,在執行時,根據需要自動擴展到多條線程,再將多線程的處理結果歸并。
(2)以現有的QVTR-XSLT方法和工具為基礎提出支持流轉換的方法,實現對QVT-R流模型轉換的支持。具體技術線路如下:
a)根據W3C XSLT 3.0 標準支持流式轉換的功能及其它新特征,設計將QVT-R流式轉換命令語義映射到XSLT流式轉換指令的方法;
b)將流QVT-R的并行處理用XSLT xsl:fork 及 xsl:merge實現;
c)用XSLT fn:snapshot和deep-skip等指令實現滑動窗口(slice windowing)、二級緩存和延遲加載(lazy loading);
d)實現對流QVT-R規則調度機制的支持。流QVT-R中跨片段訪問設定為規則的一種特殊when條件,在實現中,我們將其轉化為“反向”where 條件,根據QVT-R規則生成相應的檢驗函數,檢查是否能發現要引用的數據片段,在其它when條件也滿足時,再調用該規則。
e)開發流QVT-R圖形編輯器和代碼生成器。改進現有的QVTR-XSLT工具,加入對流轉換指令的支持,生成可進行流模型轉換的XSLT程序。
(3)探討模型驅動架構下以模型轉換技術開發實現大數據流處理系統的開發方法,以QVT-R的圖形語法及工具作為大數據流處理系統開發界面。當前,大多數大數據流式計算系統均提供了類似于 MapReduce 的類用戶編程接口,用戶必須編程實現任務中各節點的處理功能,需要復雜的專業技能分解要解決的問題,調試、優化、編碼、部署。同時暴露出來的編程接口仍然比較低級,編寫復雜處理程序或Ad-hoc查詢仍然十分耗時,并且代碼很難復用。用XPath等語言直接處理復雜的數據結構更加困難。我們希望流式QVT-R能為流式大數據的處理提供一個更直觀、用戶友好的接口,可以直接生成在開源分布式流數據處理框架下運行的計算單元、調度和配置代碼。目前更傾向于采用S4系統。
將模型驅動開發,特別是模型轉換技術用于流式大數據的轉換處理中,可將模型的方式從更高的抽象層次直觀地描述數據格式和要進行的處理工作,充分利用MDA長期積累下已成熟的方法、標準、工具和開發經驗,大幅提高數據處理系統開發的效率。
本研究根據流模型的特點,提出復雜流式大數據的抽象模型,擴展標準模型轉換語言QVT-R支持流式模型轉換的方法。同時提出一種流式QVT-R到XSLT 3.0 的語義映射方法。給出流式QVT-R的實現途徑,研究其轉換處理的語義及規則調度、緩存策略及并行處理算法,有效地應用于XML大數據流的變換,為流式大數據處理提供一個直觀簡潔、表達力強的方法,并形成相應的處理語言及算子,可配合已有的分布式流數據處理框架有效運行。
[1]孫大為,張廣艷,鄭緯民.大數據流式計算:關鍵技術及系統實例[J].軟件學報,2014,25(4):839-862,2014.
[2]崔星燦,禹曉輝,劉洋,等.分布式流處理技術綜述[J].計算機研究與發展,2015,52(2):318-332,2015.
[3]Anicic D,Rudolph S,Fodor P,et al.Stream reasoning and complex event processing in ETALIS[C].Semantic Web,2012,3(4):397-407.
[4]Muath Alrammal and Gaetan Hains,A Research Survey on Large XML Data:Streaming,Selectivity Estimation and Parallelism[M].Inter-cooperative Collective Intelligence:Techniques and Applications,Studies in Computational Intelligence 495,Springer,2014.
[5]WWW Consortium.XSL Transformations(XSLT)Version 3.0[EB/OL].Oct.2014.http://www.w3.org/TR/xslt-30/.
[6]Jesús Sánchez Cuadrado and Juan de Lara,Streaming Model Transformations:Scenarios[C].Challenges and Initial Solutions,6th International Conference on the Theory and Practice of Model Transformations(ICMT 2013),Vol.7909 of LNCS,pp.1-16,Springer,2013.
[7]OMGMeta Object Facility (MOF) 2.0 Query/View/Transformation(QVT)[EB/OL].v 1.2,Feb.2015.http://www.omg.org/spec/QVT/1.2/.
[8]Dan Li,Xiaoshan Li,Volker Stolz.QVT-Based Model Transformation Using XSLT[J].ACM SIGSOFT Software Engineering Notes,2011,36(1):1-8.
[9]Dan Li,Xiaoshan Li,Volker Stolz.Model Querying with Graphical Notation of QVT Relations[J].ACM SIGSOFT Software Engineering Notes,2012,37(4):1-8.
[責任編輯:黃 梅]
Research on QVT-based model transformation for big data stream processing
LI Dan, LI Dan-ning, ZHANG Shun
(Guizhou Academy of Sciences, Guiyang, Guizhou, 550001)
Big data stream, with the characteristics of being real-time, continuous, unlimited, complex and various, must be processed in one pass.The study on the extraction, transformations and analysis of big data streams has both theoretical and practical values.Combined with our previous work on model transformations, we propose to apply the graphical notation of QVT-R, the OMG’s standard model transformation language, to streaming transformations.It will provide a concise, intuitive, and yet effective way to deal with big data streams.However, the work of the paper provides a novel approach for streaming model transformations and also meets the needs of big data and IoT industry.
Big data; Data stream process; Model transformation; QVT
2016-07-04
貴州省應用基礎研究計劃重大項目“大數據聚合機制及分析與交易機理研究(大數據共享交換及大數據接口技術)”(黔科合JZ字[2014]2001-04);貴州省科技廳院省合作項目“貴州省赤水河流域數字生態系統研究”(黔科合計省合[2014]7010)。
李 丹(1964-),男,貴州興義人,博士,貴州科學院副研究員,研究方向:形式化方法、模型驅動開發。
TP311
A
1674-7798(2016)12-0028-04