面向领域的大数据分析流程模型转换方法*
2022-05-10文必龙李艳春
文必龙 李艳春
(东北石油大学计算机与信息技术学院 大庆 163318)
1 引言
现阶段科学研究发展到被广泛称为“第四范式”的科学大数据阶段[1],科学大数据具有数据密集型范式的特点,它具有数据的不可重复性、数据的高度不确定性、数据的高维特性、数据分析的高度计算复杂性等特征[2]。从数据内容来讲,科学大数据一般表征自然客观对象和变化过程;从数据体量来讲,科学大数据在不同学科中存在较大的差异;从数据增长速率来讲,科学大数据依学科不同其数据增长速率也变化较大;从数据获取手段来讲,科学大数据一般来自观测和实验的记录以及后续加工;从数据分析手段来讲,科学大数据的知识发现一般需要借助科学原理模型。因此,当前大数据分析还面临几方面挑战。
1)分析流程复用性差
同一领域内同类问题反复出现,大数据分析建模过程中要依靠领域知识与专家经验反复迭代试错,但是这类模型却很难被重用,加大了开发成本。
2)分析流程设计复杂
面对不同领域在大数据全生命周期处理的多样化需求,完全依赖数据分析,抛开科学原理模型和领域方法指导很难实现。
3)分析流程执行低效
科学大数据本身固有海量高纬度数据特征,使得通用处理器和单一体系结构的传统分析过程执行效率低下,限制了大数据分析对数据价值的快速获取。
随着大数据分析技术成为当今许多领域进行价值获取的主流方法,如何为大数据分析快捷构建和高效运行提供方法,以及如何建立面向领域的可复用性、结构良好、易于用户使用的大数据分析模型,这己成为当前实现大数据分析方法重用和易用的关键问题。
2 相关工作
传统的数据分析是围绕关系数据库管理系统,衍生出了相关数据分析工具[3]。例如,SPSS Modeler[4]、Matlab Spider[5]、SQL Server Analysis Services[6]、weka[7]和R等都提供了此类工具。它们以关系数据库作为核心数据引擎,提供了计算框架与算法库,但是这类传统的数据分析无法满足科学大数据固有的高维数据特征。首先,面对海量、非结构化或半结构化数据,关系数据库无法高效地存储管理;其次,数据分析工具与数据存储位置的分离使得数据噪声增多,以及数据迁移会消耗过多的时间;最后,传统的数据分析工具在进行大数据分析时,往往采用数据抽样的方式缩减数据体量,数据的抽样通常会导致数据信息量的丢失。
以互联网为媒介的云计算模式和分布式高性能数据处理模式的出现,解决了以数据库为中心的数据分析系统存在的问题。Google提出的分布式文件系统GFS[8]和MapReduce[9]框架为大规模并行数据计算与分析提供了重要的参考。Hadoop通过MapReduce框架和HDFS分布式文件系统使得在成本可控的情况下海量数据分析成为可能。随着Hadoop的出现一系列工具也随之在业界涌现,如文献[10~13]等开展研究的工具扩展了Hadoop的运用场景和应用领域。但是其对数据分析、数据挖掘算法以及可视化支持方面缺乏,使用户在进行大数据分析过程中出现效率低下、大部分时间都花费在重复开发等问题。并且,科学大数据除了数据体量增大带来的分析效率要求的提高外,更重要的是与科学数据分析相伴随的原理模型的复杂性,它导致了科学数据处理分析的计算复杂性,甚至对大数据分析能否提供量化、合理、可行、有价值的信息至关重要[14]。这使得完全依赖数据分析,抛开科学原理与领域方法进行大数据分析是不可行的。
综上所述,大数据分析中除考虑用户构建易用性与执行高效性外,其应用领域是不可忽视的,但目前尚未有行之有效的面向领域的科学大数据分析方法。因此,本文提出一种大数据分析流程建模及实施方法,设计并构建以领域业务为中心、多模型协同的面向领域分析框架,遵循层级建模与模型驱动的思想,降低大数据分析技术在各行各业应用普及的门槛,为面向领域的大数据应用系统的快捷开发和高效运行提供方法支撑。
3 领域业务驱动的大数据分析流程构建
基于大数据分析的解决领域复杂性和执行高效性的需求,提出领域业务驱动的大数据分析流程建模,将大数据分析流程划分为面向领域和面向平台的双层模型,其中面向领域的分析模型是一个逻辑模型,从领域业务角度进行定义,与实现平台无关;面向平台的分析模型是一个物理模型,从计算和执行的角度来定义,与具体实现平台、适合应用的算法和计算模型相关。逻辑模型只有在转变为物理模型后才能执行。
基于面向领域和面向平台的双层模型,大数据分析流程的可结合采用自上而下目标分解的建立方式,分析业务问题的交互与组合关系建立面向领域的分析模型,根据模型映射自动转换为依靠分析模块库和数据资源的面向平台的分析流程实例,大数据分析流程处理框架如图1所示,整体过程以面向用户的角度来讲分为三个阶段,用户层、处理层和执行层,分别对应大数据分析流程的构建阶段、映射阶段和运行阶段。
图1 大数据分析流程处理框架
1)在大数据分析流程的构建阶段,通过用户层分析流程编辑器中提供的分析模块,用户根据领域业务定义特定的面向领域的大数据分析流程,本文定义完整分析过程中的子任务为分析模块,大数据分析流程就是大数据分析过程的流程化描述,分析模块是大数据分析流程建模过程中典型流程或算法的抽象描述。
2)在大数据分析流程的映射阶段,将面向领域的大数据分析流程转换为面向平台的的数据分析流程,即根据用户层分析模块和处理层的算法、分析模型以及分析流程的一致性对应关系,将大数据分析流程从业务处理过程转换为数据处理的过程。
3)在大数据分析流程的运行阶段,根据分析模块库中的算法、分析模型以及分析流程的实体,以及各节点接受的输入输出模式信息和参数信息,将大数据分析流程实例化为符合执行平台的流程实例,结合集群资源和工具集进行执行。
在大数据分析流程建模中,流程设计过程简明易懂,能让用户容易理解和使用是一个重要的原则,因此大数据分析流程选用有向图的建模方式,以此给出大数据分析流程模型的定义如下。
定义1(模型节点v):节点v是大数据分析流程模型的最小单位。
定义2(模型的节点集V):大数据分析流程模型的节点集V={vn}是模型节点的有限非空集合。
定义3(模型有向边e):有向边e表示两个模型节点的依赖关系,如有向边e=(vi,vj)中,vi为有向边e的起点,vj为e的终点,vi为vj前驱节点。
定义4(模型有向边集E):大数据分析流程模型的有向边集E={em}是模型边的有限非空集合。
定义5(模型M):一个大数据分析流程模型表示为二元组,即M=(V,E),V是大数据分析流程模型的节点集,E是大数据分析流程模型中有向边集合。
根据前文提出的面向领域和面向平台的大数据分析流程双层描述M=MDS∪MPS,其中MDS表示面向领域大数据分析流程,从领域业务角度进行定义,屏蔽台相关的编程与底层维护细节;MPS表示面向平台的大数据分析流程,从计算和执行的角度来定义,充分与平台适合应用的算法和计算模型相结合,下面分别对二者进行详细的介绍。
4 面向领域业务的大数据分析模型
面向领域的大数据分析伴随着领域相关的多样性及价值独创性。从领域知识融合的角度来看,需要满足领域共性和可变性需求,支持开源分析框架交互性和易用性需求,降低领域分析人员使用门槛;从领域知识复用的角度来看,实现对领域专家反复迭代试错得到的模型的重用,及数据分析算法的扩展;从领域大数据处理角度来看,形成面向领域技术人员的数据集成、数据清理和分析方法,免除重复编写通用代码。
在面向领域的大数据分析模型MDS中,V是面向领域业务的大数据分析流程中所有任务的集合,E是大数据分析流程中任务执行的顺序。v∈V为面向领域业务的大数据分析流程中的最小子任务,它可以表示为一个四元组v={NDS,IInfo,OInfo,P},其中:NDS={ID,Name,Category,Description},为节点元信息集合,它对分析任务的基本信息进行定义。ID为分析任务的唯一标识;Name为分析任务名称;Category为分析任务类型,表示分析任务在流程中的作用;Description为分析任务的描述。
IInfo为节点输入信息集合,表示该分析任务的输入记录的规则;
OInfo为节点输出信息集合,表示分析任务的输出记录的规则;
P为节点基本配置参数集合,表示该分析任务操作的逻辑语义,为该节点需要用户提供的逻辑操作参数的集合,如实现该节点的分析模块,过滤条件等。
5 面向平台的大数据分析模型
面向平台的大数据分析模型需要充分与平台中的算法以及数据资源相结合。从操作环境角度来看,既要支持对单一类型资源的需求定义,也要支持多种类型资源配套需求的表达;从操作对象角度来看,既要支持输入数据、输出数据的明确定义,又要支持中间临时数据的表达;从操作步骤角度来看,支持配置任务的运行参数信息和任务依赖关系;从操作流程角度来看,既要支持操作步骤间常见的顺序基本次序关系的表达,还要支持并行流结构的表达。
因此,面向平台的大数据分析模型是一个数据相关的物理模型,数据流连接将各个操作之间的依赖关系分为三种:
1)线性关系:按线性先后顺序执行的操作序列。
2)多分支聚合关系:某个操作接收多个操作的处理结果进行处理。
3)多分支并发关系:某个操作的处理结果被分为多个分支并发处理。
面向平台的大数据分析模型MPS中,V是面向平台的大数据分析流程中所有数据处理操作的集合,E是大数据分析流程中操作间的数据流向。v∈V为一个具体的数据处理操作,它可以表示为一个五元组v={NPS,Idata,Odata,E,C},其中:
NPS={ID,Name,Type,Phase,Description,Parallel},为节点元信息集合,对数据处理操作的基本信息进行定义,ID为数据处理操作的唯一标识;Name为分析算法的名称;Type为分析算法的类型,表示分析算法所依托的执行引擎,如普通java类型,Mapreduce等;Phase分析算法所属的数据处理的阶段;Parallel为并行信息。
Idata为节点输入数据集合,表示该数据处理的输入进行描述,如输入个数,数据类型等;
Odata为节点输出数据集合,表示该数据处理的输出进行描述,如输出个数,数据类型等;
E为节点对应数据处理的实体,表示数据处理的具体实现过程,如算法、分析模型以及分析子流程;
C节点基本配置参数集合,表示该数据处理操作中相关参数集合,其中参数包含两部分,一部分为数据处理算法中设计的参数,一部分为数据算法依靠的执行平台进行资源分配控制的参数。
6 基于模型驱动的分析模型映射
面向领域的大数据分析流程模型从业务处理过程的角度对大数据分析流程的抽象描述,通过面向领域的大数据分析流程模型中节点的输入输出信息、用户配置参数、节点对应的数据分析模块的元信息等,可以实现向面向平台的发数据分析流程模型的转化,面向领域的分析模型与具体实现技术无关,转化为面向平台的分析模型后才能最终得到可运行的流程实例。
6.1 分析模块模型
为了解决用户易用性问题,使用面向领域业务的建模思想,将领域专家、数据分析专家的数据分析模型以及模型中的算法按照逻辑结构对其封装为分析模块。实现对领域相关的数据处理操作进行抽象描述,由此给出一种封装业务流程数据的方法。下面给出通用分析模块多元组定义{ID,Name,C,B,P,E,D}。
ID是分析模块唯一性标记,在其后的分析模块解释、流程模型映射起关键性作用。
Name是分析模块的名称,是分析模块对外展示的主要特征之一。
C是分析模块的类别,用以分析模块的归并分类管理和使用。
B是分析模块的基本描述,分析模块的功能简介和主要输入输出介绍等。
P是分析模块的扩展描述,分析模块的详尽描述,包括输入输出个数、格式和要求;参数个数、格式和要求;以及其他特别要求等。
E是分析模块的实体,分析模块解释和调度执行的主体对象。
D是分析模块的使用域,分析模块解释和调度执行的标识指标,描述适用的执行引擎相关信息。
分析模块使分析任务成为面向领域的大数据分析流程中的一个节点,仅提供功能描述和配置接口,以供一般用户在进行面向领域大数据分析流程设计时自由组合使用或直接调用。而对于开发层面来说,通过依据分析模块模型可以对分析模块进行扩展,在设计分析模块时,既要定义分析模块的描述及配置接口,又要设计可执行代码和可调用接口。通过分析模块使用户在探索解决某一领域数据分析的复杂问题时,专注于数据分析逻辑本身,不过多的关心特定算法的实现细节,从而可以方便地在大数据流程设计过程中对流程进行修改和扩展。
6.2 模型转换原理
为了保证面向领域业务的大数据分析模型向面向平台的大数据分析模型进行自动转换,须对模型转换方法有严格地形式定义,元模型定义了建模者使用的大数据分析流程模型元素,并为这些模型元素在语法和语义上提供了一致、通用的定义说明,使开发者在语义上取得一致[15]。因此,采用基于模型驱动的模型转换技术,根据面向领域和面向平台的大数据分析流程元模型建立映射规则,最终实现自动转换,原理图如图2所示。
图2 模型转换框架
依据上图所示,根据面向领域与面向平台的大数据分析流程元模型提取出模型转换规则,建立模型转换框架。其中,MMDS代表面向领域的大数据分析元模型;MMPS代表面向平台的大数据分析元模型。FMDS为MMDS的一个实例,是用户建立的面向领域的大数据分析流程模型;FMPS为MMPS的一个实例,是基于平台的的数据分析流程模型。RuleSet是由依据MMDS和MMPS构建的映射规则构成的集合,TE是转换引擎,使用RuleSet中的相关规则,把FMDS转换为FMPS。
6.3 基于元模型映射及映射规则
面向领域的大数据分析流程元模型描述了如何通过分析模块进行业务流程的编排与交互。根据前文分析模块的定义,它是大数据分析流程模型的最小单元,可划分为资源相关节点(Resource)和计算相关节点(Calculation)两类,资源相关节点表示进行分析过程数据资源相关的逻辑操作,计算相关节点表示数据分析任务相关的逻辑操作,面向领域的大数据分析流程元模型中包含了代表资源相关节点(Resource)和计算相关节点(Calculation)两类的元模型元素,语义详见表1。
表1 大数据分析流程模型节点类别
本文选用Hadoop分布式集群为底层执行平台,因此以Hadoop工作流元模型对面向平台的大数据分析流程元模型进行说明。Hadoop的执行引擎Oozie支持两类节点:动作节点(Action)和流程控制节点(Control),如图3所示。
图3 Hadoop工作流模型图
流程控制节点负责根据预设条件或作业状态改变工作流执行走向,主要包括start,end,decision,fork,join,kil等。动作节点负责具体的作业执行,其支持的作业类型既有Hadoop类型作业如MapReduce,Hive等,也有非Hadoop类作业如运行Java程序,HDFS操作等[16],Hadoop工作流元模型由动作节点和控制节点的元模型元素共同组成,语义详见表2。
表2 Hadoop工作流模型的节点列表
因此,两个模型节点类型对比如表3所示。大数据分析流程模型的计算节点类型可以与基于Oozie大数据可执行模型的动作节点类型进行对应,而大数据分析流程模型的的数据节点在大数据可执行模型下不存在,大数据可执行模型的控制节点在大数据分析流程模型中也没有定义,这些不存在对应的节点类型需要进行特殊处理。
表3 大数据分析流程模型与基于Hadoop工作流模型
模型转换引擎TE采用自顶向下的转换策略,输入的是面向领域的大数据分析流程对象,输出为Hadoop工作流对象。通过分析模块的类型把大数据分析流程模型分解为一组相互独立的节点对象,逐个提取节点对象进行映射。通过对节点对象的类型和结构进行分析,若是计算节点则根据类型将其直接映射成最基本的动作节点;若是资源节点则先保留节点中的参数配置,然后根据资源节点的类型,将其参数配置传递给附近的计算节点,再映射为不同的动作节点。重复上述过程,大数据分析流程模型中所有节点对象映射结束,并通过分析分析模块的依赖关系,对应添加控制节点,最终得到目标模型,转换规则如表4所示。
表4 模型转换框架的转换规则表
7 结语
本文提出面向领域和面向平台的大数据将分析流程双层模型,以可复用的数据分析模块为基础,使用户在分析在流程设计阶段以一种用户友好的、能描述业务需求的方式建立面向领域的大数据分析流程,在探索解决某一领域数据分析的复杂问题时,专注于数据分析逻辑本身,不过多的关心特定算法的实现细节,满足领域数据的复杂性和复用性。在流程执行阶段,通过使用基于模型驱动的模型映射方法完成模型转换,将面向领域的大数据分析流程转化为面向平台的大数据的分析流程,可以任意选用合适的执行引擎作为底层支持,基于元模型提取出模型转换规则,将大数据析流程转换对应执行引擎的可执行流程实例,为面向领域的大数据分析流程建模及实施提供方法支撑。最后本文中采用Hadoop作为底层为例进行说明,建立了在大数据分析流程元模型和基于Oozie的可执行流程元模型之间的映射关系。