一种基于MapReduce的增量计算方法

文档序号:6631518阅读:204来源:国知局
一种基于MapReduce的增量计算方法
【专利摘要】本发明公开了一种基于MapReduce的增量计算方法,该方法包括:创建用于缓存不同的历史处理结果的增量处理模型,包括:缓存combiner结果的模型、缓存中间结果的模型与结果直接重用的模型;当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算。本发明公开的方法,通过选择适用于数据特性的模型进行计算,可以节省大量不必要的重复计算,从而提高了数据处理的效率。
【专利说明】—种基于1^3^6011106的增量计算方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种基于的增量计算方法。

【背景技术】
[0002]随着信息时代的发展,越来越多的数据产生,数据的种类和规模正以前所未有的速度增长,如何更好的管理和利用大数据已经成为普遍关注的话题。数据规模的提升给数据存储、管理以及数据分析带来了极大的挑战,“0816公司提出了⑶模型来处理大数据,微软也提出了一个相类似的模型01*5^1。在“0816公开分布式文件系统、1^1^6(11106模型等技术中心思想的基础上发展出来了大数据处理平台,随后学术界和企业界围绕这些模型框架系统提出了一系列改进或者提出一些新的模型框架和系统。
[0003]在大数据处理中,有越来越多的应用和增量数据有关,即数据随着时间快速增加或有小的改变,为了处理这一类问题,需要设计系统只处理增加的数据而不需要对所有数据重新计算。目前,针对⑶计算模型,在其上改进的系统较为复杂,效率提升有限,大多针对某一类具体问题设计,缺乏通用性。


【发明内容】

[0004]本发明的目的是提供一种基于的增量计算方法,通过选择适用于数据特性的模型进行计算,可以节省大量不必要的重复计算,从而提高了数据处理的效率。
[0005]本发明的目的是通过以下技术方案实现的:
[0006]—种基于1^1^6(11106的增量计算方法,该方法包括:
[0007]创建用于缓存不同的历史处理结果的增量处理模型,包括:缓存结果的模型、缓存中间结果的模型与结果直接重用的模型;
[0008]当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算。
[0009]进一步的,所述根据所述输入数据的数据特性选择对应的增量处理模型包括:
[0010]当获取到输入数据时,判断输入数据的数据特性;
[0011]若为统计类数据,则选择结果直接重用模型处理;
[0012]若为时间序列数据,则选择缓存中间结果的模型处理;
[0013]若不为上述两类数据,则使用缓存结果的模型处理数据。
[0014]进一步的,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括:
[0015]若在获得输入数据时,选择缓存⑶池1加1~结果的模型来处理,则对输入的数据依次进行0叩运算、001111311161-运算与1*6(11^6运算,并缓存所述⑶池运算结果;其中,胍?运算结果作为运算的输入数据,⑶池运算结果作为1*6(11^6运算的输入数据;
[0016]当增量数据到来时,依次进行胍?运算与运算,并缓存所述⑶池运算结果02 ;再调用之前缓存的运算结果与当前的⑶池运算结果02作为1-6(11106运算的输入数据,进行1*6(11^6运算。
[0017]进一步的,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括:
[0018]若在获得输入数据时,选择缓存中间结果的模型来处理,则按照预定方式对所述输入数据进行划分后进行两个阶段的妨叩如如⑶运算;其中,划分后的数据分别依次进行111叩运算与1*6(11106运算完成第一阶段1^1^6(11106运算,获得所述按照预定方式划分的中间结果;将所述按照预定方式划分的中间结果作为111?)运算的输入数据,分别进行111?)运算,并缓存III叩运算结果11,再将所述III叩运算结果11作为1*6(111⑶运算的输入数据,完成第二阶段运算;
[0019]当增量数据到来时,将所述增量数据按照预定方式进行划分,并将划分后的数据块依次单独的进行两个阶段的妨叩如如⑶运算;其中,对于第一个处理的数据块,进行第二阶段1^1^6(11106运算时,缓存其111叩运算结果12,再调用之前缓存的111叩运算结果11与当前的111叩运算结果12作为1*6(11106运算的输入数据,进行1*6(11106运算;对于后续的数据块,在进行第二阶段运算时缓存其111叩运算结果,并调用之前缓存的111叩运算结果I1、该数据块之前所有数据块进行第二阶段砠叩运算结果,以及该数据块第二阶段砠叩运算结果作为『6(11106运算的输入数据,进行1*6(11106运算。
[0020]进一步的,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括:
[0021]若在获得输入数据时,选择结果直接重用的模型,则进行⑶运算,获得计算结果町并缓存;所述计算结果町中包含该数据的运算结果和用于后续运算且可直接调用的信息;
[0022]当增量数据到来时,将该增量数据进行妨叩如如⑶运算,获得计算结果以并缓存;将之前缓存的计算结果町与当前结算结果以作为合并!116找6运算的输入进行,进行整合处理,获得最终结果。
[0023]由上述本发明提供的技术方案可以看出,根据不同的数据特性,选择不同的模型,通过缓存不同的历史数据,在启动增量计算时,根据获取到的历史计算结果,直接进行增量数据的计算,避免了不必要的重复计算,从而提高了数据处理的效率。

【专利附图】

【附图说明】
[0024]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0025]图1为本发明实施例提供的一种基于⑶的增量计算方法的流程图;
[0026]图2为本发明实施例提供的一种基于妨叩如如⑶的增量计算方法处理流程的示意图;
[0027]图3为本发明实施例提供的一种缓存结果的模型数据处理的示意图;
[0028]图4为本发明实施例提供的一种缓存中间结果的模型数据处理的示意图;
[0029]图5为本发明实施例提供的一种结果直接重用的模型数据处理的示意图。

【具体实施方式】
[0030]下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0031]实施例
[0032]图1为本发明实施例提供的一种基于妨叩如如⑶的增量计算方法的流程图;如图1所示,该方法主要包括如下步骤:
[0033]步骤11、创建用于缓存不同的历史处理结果的增量处理模型,包括:缓存00^11161-结果的模型、缓存中间结果的模型与结果直接重用的模型;
[0034]步骤12、当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算。
[0035]其中,所述根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理可以参照如下规则:当获取到输入数据时,判断输入数据的数据特性;若为统计类数据,贝0选择结果直接重用模型处理;若为时间序列数据(即数据可以按一定标准划分且相互运算不影响),则选择缓存中间结果的模型处理;若不为上述两类数据,则使用缓存结果的模型处理数据。另外,由于缓存结果的模型为通用模型,所以也可以根据实际情况或需求利用缓存结果的模型来处理统计类数据与时间序列数据。
[0036]根据选择的增量处理模型的不同,本步骤可以有如下三种处理方式:
[0037]1)若在获得输入数据时,选择缓存⑶池1加1~结果的模型来处理,则对输入的数据依次进行111叩(映射)运算、⑶池丨]!6 (本地归并)运算与(归约)运算,并缓存所述001111311161-运算结果;其中,111叩运算结果作为⑶池运算的输入数据,⑶池运算结果作为代如⑶运算的输入数据;
[0038]当增量数据到来时,依次进行胍?运算与运算,并缓存所述⑶池运算结果02 ;再调用之前缓存的运算结果与当前的⑶池运算结果02作为1-6(11106运算的输入数据,进行1*6(11^6运算。
[0039]2)若在获得输入数据时,选择缓存中间结果的模型来处理,则按照预定方式对所述输入数据进行划分后进行两个阶段的1^^6(111⑶运算;其中,划分后的数据分别依次进行111叩运算与1*6(11106运算完成第一阶段1^1^6(11106运算,获得所述按照预定方式划分的中间结果;将所述按照预定方式划分的中间结果作为111?)运算的输入数据,分别进行111?)运算,并缓存0叩运算结果11,再将所述111叩运算结果11作为1*6(11^6运算的输入数据,完成第二阶段1^1^6(11^6运算;
[0040]当增量数据到来时,将所述增量数据按照预定方式进行划分,并将划分后的数据块依次单独的进行两个阶段的妨叩如如⑶运算;其中,对于第一个处理的数据块,进行第二阶段1^1^6(11106运算时,缓存其111叩运算结果12,再调用之前缓存的111叩运算结果11与当前的111叩运算结果12作为1*6(11106运算的输入数据,进行1*6(11106运算;对于后续的数据块,在进行第二阶段运算时缓存其111叩运算结果,并调用之前缓存的111叩运算结果
I1、该数据块之前所有数据块进行第二阶段砠叩运算结果,以及该数据块第二阶段砠叩运算结果作为『6(11106运算的输入数据,进行1*6(11106运算。
[0041]3)若在获得输入数据时,选择结果直接重用的模型,则进行⑶运算,获得计算结果町并缓存;所述计算结果町中包含该数据的运算结果和用于后续运算且可直接调用的信息;
[0042]当增量数据到来时,将该增量数据进行运算,获得计算结果以并缓存;将之前缓存的计算结果町与当前结算结果以作为合并!116找6运算的输入进行,进行整合处理,获得最终结果。
[0043]另外,上述方案的整体处理流程还可参见附图2。
[0044]本发明实施例所提供的技术方案与现有技术相比,具有以下有益效果:
[0045]1)基于妨叩如如⑶数据处理模型,扩展了增量处理功能,提升增量数据处理效率;
[0046]2)充分减少增量数据处理过程中的不必要的运算,节省存储空间和计算时间;
[0047]3)融合三个增量计算模型供用户选择,以尽可能的根据数据情况提高计算效率。
[0048]为了便于理解本发明,下面结合附图3-5对所述缓存结果的模型、缓存中间结果的模型与结果直接重用的模型进行数据处理的过程做详细的说明。
[0049]1、缓存(301111311161'结果的模型。
[0050]图3为本发明实施例提供的选择缓存结果的模型时数据处理的示意图。其中字母1代表111叩运算阶段,0代表运算阶段,I?代表1*6(111(36运算阶段。如图3所示,该方法主要包括如下步骤:
[0051]步骤一、当启动增量数据计算任务时,模型对初始数据进行111叩运算,得到〈匕671511116?形式的结果,将结果作为运算阶段的输入,⑶池丨加!'运算阶段对111叩阶段输出的〈匕7-^1116?数据在各个机器上进行简单归并后将结果缓存,然后送人1*6(11!⑶运算阶段进行运算得到初始数据的运算结果。
[0052]其中,是模型1^1^6(11106的运算过程,新的增量处理模型将1^1^6(11106中运算阶段的结果缓存以便于后面进行增量计算,⑶池运算阶段的结果相比原始数据大大减少,可以删除原始数据以节省存储空间。
[0053]步骤二、利用步骤一缓存的⑶池化虹结果进行增量数据的计算。
[0054]其中,111叩、阶段为正常的模型的运算,但进行到1*6(111(36阶段时,需要将缓存的历史数据的0011113运算结果和新增数据的⑶池运算结果一起作为1*6(111⑶阶段的输入,经!'6如⑶阶段运算后,可得到历史数据和新增数据总的最终结果。
[0055]进一步的,说明该模型的原理:
[0056]118(1001)( 一个分布式系统基础架构)中模型的III叩阶段以〈&67,%1116?的形式产生中间结果输入到00池1!161~函数中对数据进行预处理,这里需要说明的是每个节点的函数仅对该节点的111叩结果进行处理,各节点不相关。0011113处理后数据能得到压缩并且仍以〈匕7,^1116〉的形式输出到如如⑶阶段进行整合运算,得到最终结果。一般111叩阶段以行为单位划分数据进行运算得到〈匕丫,^1116〉,001111311161-阶段对III叩阶段结果进行预处理和压缩,00^1^161-函数只对本节点III叩结果进行处理,所以历史输入数据的0011113阶段运算和新增数据的⑶池运算过程及结果不相关且结果是确定的,历史数据和新增数据阶段所有产生的结果输入到1*6(111⑶阶段相当于对所有数据进行III叩、00^1^161-运算以后再进行代如⑶运算,得到的最终结果和对全部数据重新计算结果一致。
[0057]2、缓存中间结果的模型。
[0058]图4为本发明实施例提供的选择缓存中间结果模型时数据处理的示意图。其中字母1代表111叩运算阶段,卩代表1*6(11^6运算阶段。
[0059]该模型对1^1^6(11106进行扩展,扩展为两个连续的1^1^6(11106运算。需要说明,该模型通常只能针对一类具体问题,这类问题能够根据内容划分数据并单独计算每个划分块的结果,而且每个划分块的结果可以整合在一起作为最终结果。例如,计算用户最后登陆时间,可以以天为数据划分单位,中间结果为每天用户最后的登陆时间,经过第二阶段!!!叩!'6(111⑶运算,可以得到最终用户的最后登陆时间。如图4所示,该方法主要包括如下步骤:
[0060]步骤一、当启动数据计算任务时,第一个阶段,将原始输入数据(时间序列数据)按预设方式进行划分,比如按时间段划分为不同的数据块,对数据进行1^^6(111⑶运算后得到按时间段划分的中间结果,需要更改该阶段1*6(111⑶阶段的输出使得中间结果形式如〈匕67,^1116〉。第二阶段,对中间结果进行111叩运算,将111叩运算得到的结果缓存,继续进行1-6(11106运算得到最终结果。
[0061]其中,111叩运算和第二阶段的1*6(11106是模型1^^6(11106的运算过程,第一阶段的1-6(11X06需要更改输出数据形式,另外,为了增量数据的处理,需要将第二阶段的III叩运算结果缓存以便于后面进行增量计算,第二阶段111叩过程的结果相比原始数据大大减少,可以删除原始数据以节省存储空间。
[0062]步骤二、利用步骤一缓存的第二阶段!11?)运算结果进行增量数据的计算。
[0063]当新增数据到来时,按步骤一中的预设方式进行划分数据(例如,步骤一中按照时间段划分,此时也按照时间段划分),这里可以限制为新数据划分后将每个时间段数据单独作为新的输入添加进增量模型。对于增量数据,按步骤一的方式进行处理,在进行第二阶段的!'6(111⑶过程时,将步骤一运算后缓存的第二阶段的!II叩运算结果和步骤二中第二阶段爪叩运算的结果一起作为1*6(11106阶段的输入,进行1*6(11106运算后得到最新结果。这里使用的缓存内容是所有运算过程中全部的缓存内容,即随着数据的增加缓存的每一次运算的中间结果。另外,步骤二中中间结果的爪叩运算结果也要被缓存以供以后增量数据的计算。
[0064]进一步的,说明该模型的原理:
[0065]模型将数据划分后计算,参数对应于每个划分块的中间结果,再对中间结果进行爪叩操作,缓存爪叩的运算结果。当有新的数据来临时,可以将新数据按划分逐步添加到系统中运算。新数据产生的中间结果经0?)后产生的运算结果和历史数据中间结果的0?)结果不相关,两个运算相互不影响且对!'6(111⑶阶段运算不影响。1-6(11106阶段整合所有III叩阶段的结果得到最新计算结果和对所有中间结果进行1叩!'6(111⑶处理后的计算结果一致。
[0066]3、结果直接重用的模型。
[0067]图5为本发明实施例提供的选择结果直接重用的模型时数据处理的示意图。其中字母1代表!II叩阶段运算,I?代表!'6(11!⑶阶段运算。需要说明,该模型通常应用与统计类数据,即在数据运算结果能够和历史运算结果易于整合的情况下。比如统计时间序列上的平均值,运算得到的新增数据的平均值在知道新增数据个数和历史数据个数的情况下可以很容易的和历史运算结果结合计算得到最新的所有数据的平均值。如图5所示,该方法主要包括如下步骤:
[0068]步骤一、当启动数据计算任务时,模型对初始数据进行正常1^1^6(11106运算,得到初始数据的计算结果并缓存,该缓存内容包括该数据的运算结果和用于后续运算可直接调用的信息,比如数据个数,数据最大最小值等。
[0069]步骤二、利用步骤一缓存的数据进行增量数据的计算。当新的增量数据需要计算时,按照正常的妨叩如如⑶模型的进行计算,得到新数据的结果,然后通过用户控制的腕找“合并)运算对新的计算结果和步骤一缓存结果进行整合,得到整体数据的最终结果。
[0070]通过一些例子可以说明模型的可行性,比如统计最大值、平均值、最小值等,只需知道最新数据的计算结果和历史结果加上其他一些数据相关信息(如数据数量等)就可以得到所有数据的最终结果。
[0071]本发明实施例上述方案,根据不同的数据特性,选择不同的模型,通过缓存不同的历史数据,在启动增量计算时,根据获取到的历史计算结果,直接进行增量数据的计算,避免了不必要的重复计算,从而提高了数据处理的效率。
[0072]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
【权利要求】
1.一种基于MapReduce的增量计算方法,其特征在于,该方法包括: 创建用于缓存不同的历史处理结果的增量处理模型,包括:缓存combiner结果的模型、缓存中间结果的模型与结果直接重用的模型; 当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算。
2.根据权利要求1所述的方法,其特征在于,所述根据所述输入数据的数据特性选择对应的增量处理模型包括: 当获取到输入数据时,判断输入数据的数据特性; 若为统计类数据,则选择结果直接重用模型处理; 若为时间序列数据,则选择缓存中间结果的模型处理; 若不为上述两类数据,则使用缓存combiner结果的模型处理数据。
3.根据权利要求1或2所述的方法,其特征在于,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括: 若在获得输入数据时,选择缓存combiner结果的模型来处理,则对输入的数据依次进行map运算、combiner运算与reduce运算,并缓存所述combiner运算结果Cl ;其中,map运算结果作为combiner运算的输入数据,combiner运算结果Cl作为reduce运算的输入数据; 当增量数据到来时,依次进行map运算与combiner运算,并缓存所述combiner运算结果C2 ;再调用之前缓存的combiner运算结果Cl与当前的combiner运算结果C2作为reduce运算的输入数据,进行reduce运算。
4.根据权利要求1或2所述的方法,其特征在于,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括: 若在获得输入数据时,选择缓存中间结果的模型来处理,则按照预定方式对所述输入数据进行划分后进行两个阶段的MapReduce运算;其中,划分后的数据分别依次进行map运算与reduce运算完成第一阶段MapReduce运算,获得所述按照预定方式划分的中间结果;将所述按照预定方式划分的中间结果作为map运算的输入数据,分别进行map运算,并缓存map运算结果M1,再将所述map运算结果Ml作为reduce运算的输入数据,完成第二阶段MapReduce 运算; 当增量数据到来时,将所述增量数据按照预定方式进行划分,并将划分后的数据块依次单独的进行两个阶段的MapReduce运算;其中,对于第一个处理的数据块,进行第二阶段MapReduce运算时,缓存其map运算结果M2,再调用之前缓存的map运算结果Ml与当前的map运算结果M2作为reduce运算的输入数据,进行reduce运算;对于后续的数据块,在进行第二阶段MapReduce运算时缓存其map运算结果,并调用之前缓存的map运算结果Ml、该数据块之前所有数据块进行第二阶段map运算结果,以及该数据块第二阶段map运算结果作为reduce运算的输入数据,进行reduce运算。
5.根据权利要求1或2所述的方法,其特征在于,所述当获得输入数据时,根据所述输入数据的数据特性选择对应的增量处理模型进行数据处理,并在增量数据到来时,调用所述对应的增量处理模型进行数据处理时缓存的历史处理结果进行增量数据的计算包括: 若在获得输入数据时,选择结果直接重用的模型,则进行MapReduce运算,获得计算结果Rl并缓存;所述计算结果Rl中包含该数据的运算结果和用于后续运算且可直接调用的信息; 当增量数据到来时,将该增量数据进行MapReduce运算,获得计算结果R2并缓存;将之前缓存的计算结果Rl与当前结算结果R2作为合并merge运算的输入进行,进行整合处理,获得最终结果。
【文档编号】G06F12/08GK104317738SQ201410577293
【公开日】2015年1月28日 申请日期:2014年10月24日 优先权日:2014年10月24日
【发明者】孙广中, 刘惠民, 周英华 申请人:中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1