APP下载

基于QVT的流式大数据转换研究

2016-03-19李丹宁

贵州师范学院学报 2016年12期
关键词:流式数据流数据处理

李 丹,李丹宁,张 顺

(贵州科学院,贵州 贵阳 550001)

基于QVT的流式大数据转换研究

李 丹,李丹宁,张 顺

(贵州科学院,贵州 贵阳 550001)

流式大数据呈现出实时、连续、无限等特征,类型繁杂,只能一次性顺序处理。研究流式大数据的提取、变换、分析,具有较强的理论和应用价值。流式模型转换利用模型驱动开发积累的方法、技术、标准和工具,从更高的抽象层次处理大数据流,是一个正在浮现的研究热点领域。结合前期在模型转换方面的工作,提出将OMG标准模型转换语言QVT-R应用于流模型转换,为流式大数据处理提供一个直观简洁、表达力强的全新方法,满足大数据和物联网产业发展的实际需要。

大数据;流式大数据处理;模型转换;QVT

前言

大数据呈现出规模性(Volume)、多样性(Variety)、高速性(Velocity) 和价值(Value)的特点。很多大数据源,如网络监控、物联网上各种传感器产生的实时数据等,呈现出鲜明的流式特征,数据量密集、实时性强、价值密度低,往往无法完全储存起来,需要实时、高效地提取出有价值的信息。同时,大数据的多样性意味着数据来源广泛,类型繁杂。存在多层次、多方面的差异性,查询处理时可能涉及到时间、地理坐标等,实时性要求高,且只能以“不落地”(on-the-fly)的方式处理。这种复杂的数据环境和处理要求给流式大数据的处理带来极大的挑战。构建高吞吐且持续可靠运行的大数据流式计算系统是当前亟待解决的问题,但目前研究成果和实践经验相对较少[1]。

理想的大数据流式处理系统应该表现出低延迟、高吞吐、持续稳定运行、动态负载均衡、弹性可伸缩及故障恢复等特性,需要对系统架构、数据传输、编程接口、数据处理及变换、高可用技术等关键技术的进行研究[1,2]。目前,在大数据流式计算架构方面已有一些工作,如Twitter的Storm系统、Berkeley的Spark Streaming、Yahoo的S4等。和传统的集中式数据流管理系统不同,这些平台都采用分布式架构,其处理能力可以随节点数目的增长而扩展,具有良好的伸缩性、负载均衡、故障恢复、高可用性等。同时,平台的基础模块与计算逻辑分离,平台自身只完成底层数据传输、任务分配等工作,并不提供查询、处理的语言支持,用户需要自行完成处理流程和计算单元的定义。

因此,在形式化方法、模型驱动开发和模型转换方法的基础上,从更高的层次抽象大数据流,研究复杂流式大数据的数据模型、连续流处理语义、系统处理模式,开发相应的处理语言和算子,以用户自定义计算单元的方式嵌入这些分布式流数据处理平台中,即能利用框架在延迟性、吞吐量、动态负载均衡、弹性可伸缩等方面的优势有效地处理复杂流式大数据。

1 研究背景及相关工作

数据流(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 基于QVT的流模型转换

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系统。

3 结论

将模型驱动开发,特别是模型转换技术用于流式大数据的转换处理中,可将模型的方式从更高的抽象层次直观地描述数据格式和要进行的处理工作,充分利用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

猜你喜欢

流式数据流数据处理
2种6色流式细胞术试剂检测淋巴细胞亚群的性能比较
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
流式大数据数据清洗系统设计与实现
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
汽车维修数据流基础(上)
汽车维修数据流基础(下)
微球测速聚类分析的流式液路稳定性评估
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
基于数据流聚类的多目标跟踪算法
自调流式喷管型ICD的设计与数值验证