本发明涉及一种数据溯源方法,尤其是一种基于大数据模型平台下的细粒度数据溯源方法。
背景技术:
近些年随着计算机和移动互联网的发展,各种信息呈爆炸式的增长,这些信息基本可以分成两类,一类是原始的录入数据,另一类是由这些数据经过若干处理派生出来的数据。但是一般暴露给用户的往往是结果数据,这些数据对于使用者来说,其处理过程或者说可信度来说是不得而知的,而有时候结果数据和原始数据没有任何关系,这就使得用户必须去关心结果数据的来源,因此产生了数据溯源技术。
数据溯源是对数据起源和数据产生过程的描述,这些信息在很多方面发挥着重要的作用,例如调试数据和转换、审计、评估数据的质量和信任度以及实现对数据的访问控制等方面。数据溯源可以分为粗粒度溯源和细粒度溯源,在细粒度溯源方面,国内研究相对较少。
传统的细粒度数据溯源方法主要集中在数据库领域,其解决方法是通过增加标记字段来记录数据库中每一项的处理传播过程,而在大数据平台下,不管是源数据还是结果数据,都存储在hdfs上,无法直接对每个输入数据项进行注释。因此本发明提出一种针对大数据模型平台的细粒度数据溯源方法。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种基于大数据模型平台的细粒度数据溯源方法,能够解决在大数据模型平台下数据溯源过程中的数据依赖区分问题。
本发明的目的是通过以下技术方案来实现的,一种基于大数据模型平台的细粒度数据溯源方法,包括以下步骤:
s1:模型工作流分析,在hadoop平台下对oozie引擎所构成的模型工作流的分析,主要分析工作流中的输入、输出以及大数据处理框架的数据处理过程;
s2:细粒度溯源定义,以一种递归的形式表示工作流的细粒度数据溯源;
s3:溯源信息捕获,在模型执行过程中,动态地产生并获取溯源信息;
s4:溯源标记存储,对捕获的溯源信息以关联形式在hdfs上存储;
s5:溯源追踪,用来追溯产生结果数据文件中的细粒度数据项的来源输入数据项。
所述的模型工作流是在hadoop平台上由控制流节点和动作节点组成的工作流,并由hadoopoozie工作流引擎服务器解释执行。
所述的细粒度溯源定义,通过给定一个大数据平台下的工作流w,并用一个四元组表示为w={i,o,m,p},其中i表示该工作流的输入集i={i1,i2...in},其中i表示输入文件中单个输入项;o表示工作流的输出集o={o1,o2...on},其中o表示输出文件中单个输出项;m表示工作流中的模型集m={m1,m2...mn},其中m表示工作流中任意模型;p表示工作流的细粒度数据溯源操作。
所述溯源信息捕获,通过对模型处理框架扩展,并加入溯源信息的产生和传递功能,使在模型执行过程中产生的溯源信息在工作流处理模型中传递。
所述溯源标记存储,通过使用中间标识来对每个模型的输入和输出项之间建立关联,并将溯源信息的关联以文件的形式存储在hdfs上。
所述溯源追踪,基于溯源存储文件,并以一种递归的方式对任意结果数据项来追踪产生其的所有相关输入项,溯源追踪的粒度基于行级数据项。
所述的模型工作流中的控制节点不对数据产生影响,因此主要分析动作节点如mapreduce、hive、spark等。
所述的细粒度溯源定义包括以下子步骤:
s21:单个模型溯源表示:假设工作流中任何一个模型转换表示为t,给定一个转换实例t(i)=o,输入集为i,单个的输出元素o∈o,细粒度溯源需要能够确定出那些贡献给输出元素o的输入子集
s22:工作流溯源表示:工作流溯源是对当前工作流中涉及到所有模型转换的溯源,并用递归方式表示方式根据单个转换溯源,工作流w的溯源用pw表示,工作流w中的任何单个原始e的溯源表示为pw(e),若e为初始输入元素,即e∈ik,那么pw(e)={e},否则假设t作为输出e的转换,pt(e)作为e的一级溯源,递归表示为
所述的溯源信息捕获包括以下子步骤:
s31:recordreader扩展:recordreader的封装器将每次产生的输出键值(ki,vi)和相对应的唯一标识q组合成(ki,<vi,q>)一起传递给mapper;
s32:mapper扩展:mapper封装器将传来数据(ki,<vi,q>)作为输入,并对其分解,将输出键值(ki,vi)传递给底层的map函数处理,得到新的输出键值(km,vm),mapper封装器将新输出键值(km,vm)和唯一标识q一起作为结果并封装为(km,<vm,q>)输出;
s33:reducer扩展:reducer封装器收到经mapper封装器处理后的输出
s34:recordwriter扩展:recordwriter封装器把reducer封装器处理后的溯源信息
所述的溯源标记存储包括以下子步骤:
s41:map溯源存储,对map过程产生的溯源信息进行存储,通过输入数据项的文件名和偏移量生成唯一标识q,并根据不同分组生成唯一关联标识kid,以<q,kid>的形式存储在map溯源文件中;
s42:reduce溯源存储,对reduce过程产生的溯源信息进行存储,通过输入数据项的文件名和偏移量生成唯一标识p,以<kid,p>的形式存储在reduce溯源文件中。
所述的溯源追踪包括以下子步骤:
s51:选择需要追踪的数据项并查询;
s52:根据该数据项确定所属文件path和偏移量offset,利用backtrace方法进行溯源追踪;
s53:根据结果文件和溯源文件之间的命名规则,确定要查询的溯源文件名file,如果当前要查询的溯源文件是reduce溯源,则转入s54;如果是map溯源,则转入s55;否则,表示已经追踪到源头,转入s56;
s54:根据文件名file读取reduce溯源文件,并采用二分搜索的方式扫描每一行,读取每行的第一个属性为pos,并查找和传入的偏移量数值相等的pos,接着读取该pos所在行的第二个属性为provenanceid,并转入s53递归调用backtrace(file,provenanceid);
s55:根据文件名file读取map溯源文件,采用二分搜索方式,读取每行数据,并依次将其分割为lineid,fileid,position,然后查找和传入的偏移量数值相等lineid的行,根据fileid和file查询输入的文件名并设置为file,最后转入s53递归调用backtrace(file,position);
s56:执行到该步骤表明已追踪到源头,直接输出文件名和输入数据项,直到所有的数据项追踪完毕,执行结束。
本发明的有益效果是:为现有的大数据模型分析平台提供了一种有效的、正确的数据溯源方法,该方法克服了传统方法在大数据平台下不适用的问题,并为溯源文件建立索引,减少io操作,提高了查询速度。
附图说明
图1为一种基于大数据模型平台的细粒度溯源方法的流程图;
图2为溯源模型构建第一流程图;
图3为溯源模型构建第二流程图;
图4为溯源标记存储关系图;
图5为细粒度数据溯源追踪流程图。
具体实施方式
下面结合具体实施例进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
实施例1
如图1,一种基于大数据模型平台的细粒度数据溯源方法,包括以下步骤:
s1:模型工作流分析,在hadoop平台下对oozie引擎所构成的模型工作流的分析,主要分析工作流中的输入、输出以及大数据处理框架的数据处理过程;
s2:细粒度溯源定义,以一种递归的形式表示工作流的细粒度数据溯源;
s3:溯源信息捕获,在模型执行过程中,动态地产生并获取溯源信息;
s4:溯源标记存储,对捕获的溯源信息以关联形式在hdfs上存储;
s5:溯源追踪,用来追溯产生结果数据文件中的细粒度数据项的来源输入数据项。
所述的模型工作流是在hadoop平台上由控制流节点和动作节点组成的工作流,并由hadoopoozie工作流引擎服务器解释执行。
所述的细粒度溯源定义,通过给定一个大数据平台下的工作流w,并用一个四元组表示为w={i,o,m,p},其中i表示该工作流的输入集i={i1,i2...in},其中i表示输入文件中单个输入项;o表示工作流的输出集o={o1,o2...on},其中o表示输出文件中单个输出项;m表示工作流中的模型集m={m1,m2...mn},其中m表示工作流中任意模型;p表示工作流的细粒度数据溯源操作。
如图2,3,所述溯源信息捕获,通过对原生态大数据模型处理框架扩展,并加入溯源信息的产生和传递功能,使在模型执行过程中产生的溯源信息在工作流处理模型中传递。
如图4,所述溯源标记存储,通过使用中间标识来对每个模型的输入和输出项之间建立关联,并将溯源信息的关联以文件的形式存储在hdfs上。
如图5,所述溯源追踪,基于溯源存储文件,并以一种递归的方式对任意结果数据项来追踪产生其的所有相关输入项,溯源追踪的粒度基于行级数据项。
所述的模型工作流中的控制节点不对数据产生影响,因此主要分析动作节点如mapreduce、hive、spark等。以mapreduce为例,mapreduce框架主要包括两个阶段:
map阶段:设map函数为m,输入数据集为i,对于i中每个元素i,它可以产生0个或者多个输出元素,即
m(i)=∪i∈im({i})
reduce阶段:设reduce函数为r,输入数据集为i,其中每个元素是一个键值对,则r的输出为针对输入i中的每个相同键的分组产生的0个或者多个元素,假设用k1,k2...kn表示i中不同键,gj是由输入i中所有键等于kj的键值对组成,即
r(i)=∪j∈[1,n]r({gj})
所述的细粒度溯源定义包括以下子步骤:
s21:单个模型溯源表示:假设工作流中任何一个模型转换表示为t,给定一个转换实例t(i)=o,输入集为i,单个的输出元素o∈o,细粒度溯源需要能够确定出那些贡献给输出元素o的输入子集
s22:工作流溯源表示:工作流溯源是对当前工作流中涉及到所有模型转换的溯源,并用递归方式表示方式根据单个转换溯源,工作流w的溯源用pw表示,工作流w中的任何单个原始e的溯源表示为pw(e),若e为初始输入元素,即e∈ik,那么pw(e)={e},否则假设t作为输出e的转换,pt(e)作为e的一级溯源,递归表示为
所述的溯源信息捕获包括以下子步骤:
s31:recordreader扩展:recordreader的封装器将每次产生的输出键值(ki,vi)和相对应的唯一标识q组合成(ki,<vi,q>)一起传递给mapper;
s32:mapper扩展:mapper封装器将传来数据(ki,<vi,q>)作为输入,并对其分解,将输出键值(ki,vi)传递给底层的map函数处理,得到新的输出键值(km,vm),mapper封装器将新输出键值(km,vm)和唯一标识q一起作为结果并封装为(km,<vm,q>)输出;
s33:reducer扩展:reducer封装器收到经mapper封装器处理后的输出
s34:recordwriter扩展:recordwriter封装器把reducer封装器处理后的溯源信息
所述的溯源标记存储包括以下子步骤:
s41:map溯源存储,对map过程产生的溯源信息进行存储,通过输入数据项的文件名和偏移量生成唯一标识q,并根据不同分组生成唯一关联标识kid,以<q,kid>的形式存储在map溯源文件中;
s42:reduce溯源存储,对reduce过程产生的溯源信息进行存储,通过输入数据项的文件名和偏移量生成唯一标识p,以<kid,p>的形式存储在reduce溯源文件中。
所述的溯源追踪包括以下子步骤:
s51:选择需要追踪的数据项并查询;
s52:根据该数据项确定所属文件path和偏移量offset,利用backtrace方法进行溯源追踪;
s53:根据结果文件和溯源文件之间的命名规则,确定要查询的溯源文件名file,如果当前要查询的溯源文件是reduce溯源,则转入s54;如果是map溯源,则转入s55;否则,表示已经追踪到源头,转入s56;
s54:根据文件名file读取reduce溯源文件,并采用二分搜索的方式扫描每一行,读取每行的第一个属性为pos,并查找和传入的偏移量数值相等的pos,接着读取该pos所在行的第二个属性为provenanceid,并转入s53递归调用backtrace(file,provenanceid);
s55:根据文件名file读取map溯源文件,采用二分搜索方式,读取每行数据,并依次将其分割为lineid,fileid,position,然后查找和传入的偏移量数值相等lineid的行,根据fileid和file查询输入的文件名并设置为file,最后转入s53递归调用backtrace(file,position);
s56:执行到该步骤表明已追踪到源头,直接输出文件名和输入数据项,直到所有的数据项追踪完毕,执行结束。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。