一种面向MapReduce范型的数据查询模型与方法

文档序号:6637557阅读:190来源:国知局
一种面向MapReduce范型的数据查询模型与方法
【专利摘要】本发明公开了一种面向MapReduce范型的数据查询模型与方法,属于信息技术处理领域。将MapReduce范型与现有数据库查询描述语言进行有机结合,从而能够对并行与串行查询语句进行统一处理的基本模型与方法。本发明明确了在Hadoop平台与现有集中式数据库复合的环境下,针对不同的并行查询需求进行规格化描述与处理的基本流程。方法对存储于不同系统中的分布式数据位置进行一致化表示,利用UDF(用户自定义方程)来描述Map和Reduce阶段的查询过程,从而达到采用现有数据库查询语言的描述格式,广泛地针对不同种类的数据对象进行分布式存储与并行处理的目标。
【专利说明】—种面向MapReduce范型的数据查询模型与方法
[0001]

【技术领域】
[0002]本发明涉及一种面向MapReduce范型的数据查询模型与方法,属于信息技术处理领域。

【背景技术】
[0003]Hadoop平台是由Apache基金会基于MapReduce并行处理模型而实现的开源软件平台。它具有良好的可扩展性,可以被简单、快速地部署在由数十乃至上千台计算机所组成的集群平台上,以便以批量形式对海量数据进行高效的并行处理。Hadoop平台屏蔽了并行处理过程中重要但繁琐的任务调度、数据存储与传输等细节,要求用户按照MapReduce编程范型来编写相应的处理程序,即可实现对以key-value形式分布存储的数据进行处理的目的。
[0004]然而,相较于类似SQL这样的数据库查询描述语言,对于缺乏数据库专业背景的普通用户而言,编写数据处理程序的任务依旧复杂,并且对用户之间的沟通与协调造成障碍。
[0005]这种描述性查询语言的缺失为Hadoop平台进一步推广造成了障碍,成为面向MapReduce范型的描述性查询语言研究中的一大技术难点。
[0006]目前面向MapReduce范型的描述性语言研究主要有:
Christopher Olston和Benjamin Reed等提出了基于MapReduce范型的描述性语言PigLatin。它首先提出数种高规格化的,基于关系数据库语义的操作元,例如FILTER,GROUP等来形成数据流查询语言。进而提出了嵌套式数据模型,用以对分布式数据进行形式化描述,从而能够让用户尽可能地简洁地对数据查询过程进行高度概括性的描述。(Olston, C.; Reedj B.; Srivastavaj U.; Kumar, R.& Tomkins,A.Pig Latin: ANot-So-Foreign Language for Data Proc.ACM SIGMODj 2008)。 Ashish Thusoo 和Joydeep Sen Sarma等则是在对Hadoop平台进行适度扩展的前提下,实现了 Hive平台,用以对海量的简单关系型数据进行处理。在此基础上,他们又提出了 HiveQL,一种非常接近于SQL标准的描述性查询语言,从而能够使用户以类似SQL语言的格式对数据查询过程进行描述(Thusoo, A.; Sarma, J.; Jain, N.; Shao, Z.; Chakka, P.; Anthony, S.; Liu,
H.; ffyckoff, P.& Murthy, R.Hive: A Warehousing Solut1n Over a Map-ReduceFramework Proc.VLDB Endowment, 2009, 2, 1626-1629 )。
[0007]上述两种查询语言也都提出并实现了各自的语言解释器,用以将用户的查询语句解释为对应的Hadoop程序,以便对数据进行实际的处理。然而为了能够对各种查询要求进行广泛的支持,经编译后的处理程序在效率上并不尽人如意。例如,PigLatin解释器所生成的Hadoop程序仅能达到一个最优处理程序效率的二分之一。


【发明内容】

[0008]发明目的:针对现有技术中存在的问题,本发明提供一种面向MapReduce范型的数据查询模型与方法。
[0009]通过将Hadoop平台与现有的集中式数据库进行有机复合,达到了利用各类最新的数据库技术对本地串行任务实现高效处理的目的。同时根据不同的用户需求,大数据对象既可以存储于分布式文件系统BDFS (Block-based Distributed File System)中,又可以存储于分布于各集群计算机的数据库系统中,但两者的分布状态均通过统一的数据结构DL(Distributed Locat1ns)进行描述,以达到将数据的抽象类型与位置信息与具体的数据内容隔离的目的。对象的数据内容以两种形式进行区别存储,一种以文件形式存储于分布文件系统BDFS中,而另一种则以数据库对象的形式存储于各子数据库中;基于这种区分,DL 又被进一步划分为 DFL (Distributed File Locat1ns)和 DDL (DistributedDatabase Locat1ns),以便对上述两种分布数据对象进行区别处理;此外,对于部分数据量小、更新频繁、且需在整个集群范围内进行调用的参数GCKGlobal Objects),则只将其存储于主数据库中,并在执行过程中广播至所有集群计算机。在此基础之上,利用UDF (用户自定义方程)结合上述的DL与GO数据来对并行处理过程中的Map和Reduce阶段进行描述,每个UDF作为并行查询语句中的一个子查询语句;基于这种结构,可以达到采用现有数据库查询语言的描述格式,广泛地针对不同种类的数据对象进行分布式存储与并行处理的目的。
[0010]技术方案:一种面向MapReduce范型的数据查询模型,包含显式地利用UDF进行定义的Map、RedUce数据处理过程;其中,UDF过程被称为子查询语句,而除此之外的语句则被称为主查询语句,两者均依据已有数据库查询语言格式来进行描述;在后续查询处理过程中,Hadoop平台将子查询语句依据MapReduce处理规则分配到各集群计算机中,再由部署在各计算机中的集中式数据库进行处理。
[0011]所述子查询语句包含全局参数信息GO和分布式数据位置信息DL ;DL是指将大数据对象经前期并行处理后所得到的数据分布状态,对象的数据内容以两种形式进行区别存储,一种以文件形式存储于分布文件系统BDFS中,而另一种则以数据库对象的形式存储于各子数据库中;基于这种区分,DL被进一步划分为DFL和DDL,以便对上述两种分布数据对象进行区别处理。
[0012]一种面向MapReduce范型的数据查询方法,包括如下步骤:
步骤1,利用主数据库的交互界面,对并行查询语句进行提交;
步骤2,对并行查询语句中的子查询语句进行拆分,并转置为至少一个Hadoop程序,其中每一个子查询语句对应于一个Map与Reduce处理阶段,阶段的先后顺序取决于子查询语句的前后排列,具体步骤如下:
步骤2-1,按顺序扫描所有子查询语句,按照其所显式标注的Map,Reduce阶段,形成MapReduce操作序列;
步骤2-2,在两个连续的Map操作之间,插入一个空Reduce操作,用于传递前置Map操作产生的中间结果;若序列中的最后一个阶段是Map操作,则在其后添加一个Reduce操作;
步骤2-3,在两个连续的Reduce操作之间,插入一个空Map操作,对数据按照后置Reduce操作所要求的划分规则进行分割;若序列中的第一个阶段是Reduce操作,则在其前添加一个Map操作;
步骤2-4,在每一个非空的Map与Reduce操作中,对其子查询语句中所包含的DL数据以程序参数的形式进行提交,而对其包含的GO数据,则将数据内容直接嵌入子查询语句中;
步骤2-5,经上述步骤处理所得到的序列包含一连串交替分布的Map和Reduce操作,将每连续的一对操作(即一个Map操作和Reduce —个操作)封装为一个Hadoop过程,并将所有产生的Hadoop过程返回;
步骤3,Hadoop平台对转置后的程序依据MapReduce规则进行处理,在每一阶段将所对应的Map和Reduce任务分配到集群计算机中,具体步骤如下:
步骤3-1,若Map阶段为空,则对Map任务进行随机分配,否则扫描其子查询语句中包含的DL数据;若为DFL,则对每一部分数据按照就近原则将Map任务分配到尽可能邻近数据存储位置的集群计算机中;若为DDL,则按照每一部分数据的存储位置,即子数据库所在的集群计算机,进行Map任务的分配;
步骤3_2,Map阶段产生的中间结果均存储在分布式文件系统中,因此若Reduce阶段的子查询语句中不包含DDL,则对Reduce任务进行随机分配;否则也需要将每个Reduce任务分配到对应DDL数据所在的集群计算机中;
步骤4,在每一个Map和Reduce任务的处理过程中,抽取其所包含的子查询语句,转置为可由本地集中式数据库处理的多个查询语句,并经由数据库系统的内部接口提交,具体步骤如下:
步骤4-1,对于子查询语句中的DFL数据部分,利用能够从分布式文件统中读取数据内容的数据库操作元进行替代;
步骤4-2,对于子查询语句中的DDL数据部分,则利用数据内容的本地标识进行替换;步骤4-3,在Map阶段,子查询语句末添加分布式文件系统的写入操作,封装为最终的可以被本地集中式数据库执行的查询语句;在Reduce阶段,根据用户的自行定义,查询结果可以写入分布式文件系统,也可以写入各子数据库,基于这种区别,在子查询语句末添加相应的数据库操作,并封装为可被本地数据库执行的查询语句;待上述过程处理完毕后,将查询语句经由数据库内部接口提交至相应子数据库;
步骤5,本地集中式数据库对接收到的查询语句进行相应的数据查询与操作处理;
步骤6,对查询结果的数据内容进行存储后,对主数据库返回其位置信息;
步骤7,主数据库对各子数据库返回的分布式数据位置进行合并,存储为一个DL对象。
[0013]一个复合式并行数据处理系统被用于处理上述面向MapReduce范型的数据查询过程,它由I台主计算机并N台子计算机所构成,包含一个由Hadoop与若干集中式数据库,每台计算机中包含一个功能全面的集中式数据库,部署于主计算机上的数据库被称为主数据库,而其它数据库则被称为子数据库。
[0014]本发明采用上述技术方案,具有以下有益效果:
1、通过将Hadoop平台与现有的集中式数据库进行有机复合,达到了利用各类最新的数据库技术对本地串行任务实现高效处理的目的;
2、同时根据不同的用户需求,数据既可以存储于分布式文件系统中,又可以存储于分布于各集群计算机的子数据库系统中,但两者的分布位置均通过统一的数据结构进行描述,以达到将数据的抽象类型信息与具体存储信息隔离的目的;
3、在此基础之上,利用UDF (用户自定义方程)来描述Map和Reduce阶段的查询过程,从而达到采用现有数据库查询语言的描述格式,广泛地针对不同种类的数据对象进行分布式存储与并行处理的目的。

【专利附图】

【附图说明】
[0015]图1为面向MapReduce范型的描述语言进行解释以生成相应Hadoop程序的过程图。

【具体实施方式】
[0016]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0017]面向MapReduce范型的数据查询模型,包含显式地利用UDF进行定义的Map、Reduce数据处理过程;其中,UDF过程被称为子查询语句,而除此之外的语句则被称为主查询语句,两者均依据已有数据库查询语言格式来进行描述;在后续查询处理过程中,Hadoop平台将子查询语句依据MapReduce处理规则分配到各集群计算机中,再由部署在各计算机中的集中式数据库进行处理。
[0018]子查询语句包含全局参数信息GO和分布式数据位置信息DL ;DL是指将大数据对象经前期并行处理后所得到的数据分布状态,对象的数据内容以两种形式进行区别存储,一种以文件形式存储于分布文件系统BDFS中,而另一种则以数据库对象的形式存储于各子数据库中;基于这种区分,DL被进一步划分为DFL和DDL,以便对上述两种分布数据对象进行区别处理。
[0019]利用面向MapReduce范型的描述语言对数据库连接操作查询进行描述的最小对象为两个分布存储的利用简化关系模型描述的数据库表R和S,系统部署在由I台主计算机并N台子计算机构成的集群系统中,两个数据库表均按照用户自定义的方式进行分布,其DL信息则存储于主数据库中。按照图1所示的流程图,面向MapReduce范型的数据查询方法包括以下步骤:
步骤1,利用主数据库的交互界面,提交并行化的连接查询语句,语句包括对于表R的过滤操作以及与表S的后续连接操作,过滤操作的阈值为f,连接操作的表属性则分别为r和s ;表R按照DFL的形式进行存储,而表S则按照DDL的形式进行存储,而f则作为一个GO值,只存储于主数据库中;过滤操作被封装于一个用于Map阶段的UDF中,而连接操作则封装于一个用于Reduce阶段的UDF中;
步骤2,对并行查询语句中的子查询语句进行拆分,由于此语句包含一个Map阶段与一个Reduce阶段,因此整个查询被转置为一个Hadoop程序,具体步骤如下:
步骤2-1,按顺序扫描所有子查询语句,按照其所显式标注的Map,Reduce阶段,形成MapReduce序列,其中Map阶段被用于执行过滤操作,而Reduce阶段则被用于执行连接操作; 步骤2-2,若查询语句中的Map与Reduce阶段并非交替出现时,则需对其进行扫描与补充以期符合MapReduce范型的要求,但是此例中不存在这种情况;
步骤2-3,将表R和S的DL数据以程序参数的形式进行提交,然后提取过滤阈值f的数值并嵌入Map阶段的子查询语句中,取代f的对象名称;
步骤2-4,将经过上述步骤处理所得到的一对连续的Map与Reduce阶段封装为一个Hadoop过程并返回;
步骤3,Hadoop平台对转置后的程序依据MapReduce规则进行处理,在每一阶段将所对应的Map和Reduce任务分配到集群计算机中,具体步骤如下:
步骤3-1,扫描Map阶段的子查询语句中所包含的表R的DL数据,由于其为DFL,因此按照就近原则将Map任务分配到尽可能邻近数据存储位置的集群计算机中;
步骤3-2,扫描Map阶段的子查询语句中所包含的表S的DL数据,由于其为DDL,因此将Map任务均分配至存储有表S数据的子数据库所在集群计算机中;
步骤3-3,经过滤操作后的表R数据以及完整的表S数据,在Map阶段的子查询语句执行完毕后,按照连接操作属性进行数据再分布,中间结果均存储在分布式文件系统BDFS(Block-based Distributed File System)中;
步骤3-4,Reduce阶段的子查询语句的操作对象为Map阶段按照连接属性进行数据再分布后的中间结果,不包含DDL数据,因此对Reduce任务进行随机分配;
步骤4,在每一个Map和Reduce任务的处理过程中,抽取其所包含的子查询语句,转置为可由本地集中式数据库处理的一至多个查询语句,并经由数据库系统的内部接口提交,具体步骤如下:
步骤4-1,对于子查询语句中的DFL数据部分,转置为能够从分布式文件系统中对数据内容进行读取的数据库操作;
步骤4-2,对于子查询语句中的DDL数据部分,则利用数据内容的本地标识进行替换;步骤4-3,在Map阶段,子查询语句末添加分布式文件系统的写入操作;在Reduce阶段,根据用户的自行定义,查询结果可以写入分布式文件系统,也可以写入各子数据库,基于这种区别,在子查询语句末添加相应的数据库操作;在上述的Map和Reduce阶段中,待封装过程处理完毕后,将子查询语句经由数据库内部接口提交至相应子数据库;
步骤5,本地集中式数据库在各Map与Reduce阶段,对接收到的经过封装的子查询语句进行处理,包括在Map阶段读取表S执行过滤操作,以及在Reduce阶段读取存储在分布式文件系统中的Map中间结果数据,所读取的数据依据Reduce阶段子查询语句的要求被区分为表R的子表R’以及经过滤后的表S的子表S’,子表中的数据元组在Map阶段依据连接操作要求进行哈希划分,以确保子表对之间存在查询要求的连接关系,以便在并行执行的Reduce任务中进行子表R’与子表S’的连接操作后,可以取得正确的查询结果;
步骤6,对查询结果的数据内容进行存储后,对主数据库返回其位置信息;
步骤7,主数据库对各子数据库返回的分布式数据位置进行合并,存储为一个DL对象。
【权利要求】
1.一种面向MapReduce范型的数据查询模型,其特征在于:包含显式地利用UDF进行定义的Map、RedUce数据处理过程;其中,UDF过程被称为子查询语句,而除此之外的语句则被称为主查询语句,两者均依据已有数据库查询语言格式来进行描述;在后续查询处理过程中,Hadoop平台将子查询语句依据MapReduce处理规则分配到各集群计算机中,再由部署在各计算机中的本地集中式数据库进行处理。
2.如权利要求1所述的面向MapReduce范型的数据查询模型,其特征在于:所述子查询语句包含全局参数信息GO和分布式数据位置信息DL ;DL是指将大数据对象经前期并行处理后所得到的数据分布状态,对象的数据内容以两种形式进行区别存储,一种以文件形式存储于分布文件系统BDFS中,而另一种则以数据库对象的形式存储于各子数据库中;基于这种区分,DL被进一步划分为DFL和DDL,以便对上述两种分布数据对象进行区别处理。
3.—种面向MapReduce范型的数据查询方法,其特征在于,包括如下步骤: 步骤1,利用主数据库的交互界面,对并行查询语句进行提交; 步骤2,对并行查询语句中的子查询语句进行拆分,并转置为至少一个Hadoop程序,其中每一个子查询语句对应于一个Map与Reduce处理阶段,阶段的先后顺序取决于子查询语句的前后排列; 步骤3,Hadoop平台对转置后的程序依据MapReduce规则进行处理,在每一阶段将所对应的Map和Reduce任务分配到集群计算机中; 步骤4,在每一个Map和Reduce任务的处理过程中,抽取其所包含的子查询语句,转置为可由本地集中式数据库处理的多个查询语句,并经由数据库系统的内部接口提交; 步骤5,本地集中式数据库对接收到的查询语句进行处理; 步骤6,对查询结果的数据内容进行存储后,对主数据库返回其位置信息; 步骤7,主数据库对各子数据库返回的分布式数据位置进行合并,存储为一个DL对象。
4.如权利要求3所述的面向MapReduce范型的数据查询方法,其特征在于,步骤2中对于并行查询语句的解释,具体步骤如下: 步骤2-1,按顺序扫描所有子查询语句,按照其所显式标注的Map,Reduce阶段,形成MapReduce操作序列; 步骤2-2,在两个连续的Map操作之间,插入一个空Reduce操作,用于传递前置Map操作产生的中间结果;若序列中的最后一个阶段是Map操作,则在其后添加一个Reduce操作; 步骤2-3,在两个连续的Reduce操作之间,插入一个空Map操作,对数据按照后置Reduce操作所要求的划分规则进行分割;若序列中的第一个阶段是Reduce操作,则在其前添加一个Map操作; 步骤2-4,在每一个非空的Map与Reduce操作中,对其子查询语句中所包含的DL数据以程序参数的形式进行提交,而对其包含的GO数据,则将数据内容直接嵌入子查询语句中; 步骤2-5,将序列中每连续的一个Map阶段与一个Reduce阶段封装为一个Hadoop过程,并将所有产生的Hadoop过程返回。
5.如权利要求3所述的面向MapReduce范型的数据查询方法,其特征在于,步骤3中对转置后Hadoop过程进行处理的过程,具体步骤如下: 步骤3-1,若Map阶段为空,则对Map任务进行随机分配,否则扫描其子查询语句中包含的DL数据;若为DFL,则对每一部分数据按照就近原则将Map任务分配到尽可能邻近数据存储位置的集群计算机中;若为DDL,则按照每一部分数据的存储位置,即子数据库所在的集群计算机,进行Map任务的分配; 步骤3_2,Map阶段产生的中间结果均存储在分布式文件系统中,因此若Reduce阶段的子查询语句中不包含DDL,则对Reduce任务进行随机分配;否则也需要将每个Reduce任务分配到对应DDL数据所在的集群计算机中。
6.如权利要求3所述的面向MapReduce范型的数据查询方法,其特征在于,步骤4中对于子查询语句的本地封装,具体步骤如下: 步骤4-1,对于子查询语句中的DFL数据部分,转置为能够从分布式文件统中对数据内容进行读取的数据库操作;步骤4-2,对于子查询语句中的DDL数据部分,则利用数据内容的本地标识进行替换;步骤4-3,在Map阶段,子查询语句末添加分布式文件系统的写入操作;在Reduce阶段,根据用户的自行定义,查询结果可以写入分布式文件系统,也可以写入各子数据库,基于这种区别,在子查询语句末添加相应的数据库操作;待上述过程处理完毕后,将封装后的查询语句经由数据库内部接口提交至相应子数据库。
7.如权利要求3所述的向MapReduce范型的数据查询方法,其特征在于:方法通过复合式并行数据处理系统实施,复合式并行数据处理系统由I台主计算机并N台子计算机所构成,包含一个由Hadoop与若干集中式数据库,每台计算机中包含一个功能全面的集中式数据库,部署于主计算机上的数据库被称为主数据库,而其它数据库则被称为子数据库。
【文档编号】G06F17/30GK104462351SQ201410738438
【公开日】2015年3月25日 申请日期:2014年12月5日 优先权日:2014年12月5日
【发明者】陆佳民, 冯钧 申请人:河海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1