一种处理数据源更新的MapReduce执行过程优化方法与流程

文档序号:14037094阅读:336来源:国知局
一种处理数据源更新的MapReduce执行过程优化方法与流程

本发明涉及计算机技术领域,更具体地,涉及一种处理数据源更新的mapreduce执行过程优化方法。



背景技术:

随着大数据技术的发展,基于hadoop集群的海量数据存储、分析及处理应用越来越广泛。hadoop是基于google云平台的开源实现。hadoop的两个核心组件是分布式文件系统hdfs(存储海量数据)和并行计算框架mapreduce(进行分布式并行计算)。

通常采用mapreduce计算框架对海量数据进行分析及处理。mapreduce在执行过程中,首先对数据源进行切片,形成若干个datasplit,并在集群中的不同节点上启动mapper任务,读取数据源切片datasplit,map任务执行完成后将输出结果保存在本地,并以键值对key-value形式存储。接着对map的输出结果进行shuffle,目的是将键key相同的值value传输到同一个reducer节点上。这个过程中,待map执行完后才启动reducer任务,map任务可能会执行几分钟至几小时不等,如果在map任务执行过程中,数据源有新的数据,所有的map任务则要重新执行,即重启mapreduce任务,这会大大降低mapreduce的执行效率。因此,需要引入一种新的机制,对map任务进行监控,当满足一定规则时,只重新启动部分map任务,而其他map任务不受干扰,这样既满足了数据更新的需求,也能提高程序执行效率。



技术实现要素:

本发明为克服上述现有技术所述的至少一种缺陷,提供一种处理数据源更新的mapreduce执行过程优化方法,在数据源有更新的情况下,提高整个mapreduce任务的执行效率。

为解决上述技术问题,本发明采用了如下技术方案:

一种处理数据源更新的mapreduce执行过程优化方法,包括map任务和reducer任务,在map任务执行过程中,启动monitor监测器任务及rule规则判断任务;

monitor监测器任务监测数据源切片并记录其快照;

rule规则判断任务判断数据源切片的变化情况,并决定是否重启map任务。

进一步地,监测器任务monitor为定时任务,每隔一定时间间隔tμ启动。

具体地,监测器任务monitor的执行步骤如下:

s11:记第一次启动map任务的时刻为t0,并将t0时刻各个数据源切片的快照(snapshot)记为d0;

s12:在每个mapi节点上,均启动一个monitori任务,每隔tμ时间,记录当前mapi所对应的数据源切片快照,结构如下:

{no.mapi,<dm,dn>}

其中,no.mapi为第i个map任务的编号;dm为上一次mapi重启时所处理的数据切片,dn是mapi任务处理的数据源切片在时间tn(n=1,2,3…)的快照,时间间隔为tμ,即:

ti+1=ti+tμ,i=0,1,2,…,n-1。

进一步地,规则判断任务rule在monitor监测器任务完成记录数据源切片快照后启动,rule任务在每个map节点上执行。

具体地,规则判断任务rule的执行步骤如下:

s21:计算当前时刻tn的数据源切片dn与上一次mapi启动或重启时所处理的数据切片dm的数据条数nn和nm。

s22:计算当前时刻tn的数据源切片dn与上一次mapi重启时所处理的数据切片dm的差异f(m,n):

其中,xnk和xmk分别是数据源dn和dm的数据项(k=1,2,3,…,n);当dn和dm的数据条数不相等时,用数据条数的差异计算dn和dm的差异;当dn和dm的数据条数相等,则比较dn和dm的每条数据的差异;

s23:当nn≠nm时,判断差异f(m,n)是否超过阈值α,如果f(m,n)>α,则重启mapi,反之,则忽略差异;当nn=nm时,判断差异f(m,n)是否超过阈值β,如果f(m,n)>β,则重启mapi,反之,则忽略差异;

s24:若mapi重启,则将dm置为dn,并记录下mapi处理的当前最新数据,若mapi未重启,则dm保持不变。

与现有技术相比,有益效果是:在数据源有更新的情况下,无需重启整个mapreduce任务,而是仅将所处理的数据源切片发生更新的map任务重启,其他map任务继续执行,这样能够更有效地利用hadoop集群的资源,提高mapreduce任务的运行效率;monitor任务只记录上一次map任务启动或者重启时处理的数据源切片和当前的数据源切片,而不需记录所有监测时刻ti的数据源切片,这样有效的限制了数据存储空间,本mapreduce优化方法所需的存储空间代价较小;本发明中monitor和rule任务与正在执行的map任务是并行完成的,不会带来额外的时间成本,而在数据源发生较大更新时,能够减少总的mapreduce任务执行时间。

附图说明

图1是本发明在一实施例中的mapreduce任务执行图。

图2是本发明在一实施例中的monitor和rule任务执行过程示意图。

图3是本发明在一实施例中的rule任务的执行流程图。

具体实施方式

下面结合附图对本发明进行进一步地描述,需要说明的是,附图仅用于示例性说明,不能理解为对本专利的限制。

如图1所示,一种处理数据源更新的mapreduce执行过程优化方法,包括map任务和reducer任务,在map任务执行过程中,启动monitor监测器任务及rule规则判断任务;

monitor监测器任务每隔tμ时间记录一次map任务所处理的数据源切片的快照;

rule规则算当前最新的数据源切片快照和map所处理的数据源切片的快照的差异,并决定是否重启map任务。

结合图2对本发明的具体执行过程进行说明,在本实施例中,tμ=3min:

s1:t0时刻首次执行map任务,monitor任务记录当前的数据源切片d0,并将d0的快照赋值给dm,并每隔时间间隔tμ记录ti时刻数据源切片的快照。

s2:t1时刻,monitor任务记录d1的快照,即dn=d1。rule任务计算f(m,n),这里dn和dm的数据条数相等,即nm=nn,且计算得出f(m,n)<β,则不需要重启map任务。t2时刻,monitor和rule任务执行相同的操作。

s3:t3时刻,monitor任务记录d3的快照,即dn=d3。rule任务计算f(m,n),这里nm=nn,并且数据发生较大的变化,计算得出f(m,n)>β,此刻,需要重启map任务。此时,将dm记为d3。

s4:t4时刻,monitor任务记录d4的快照,即dn=d4。rule任务计算f(m,n),这里dn和dm的数据条数相等,即nm=nn,计算得出f(m,n)<β,则不需要重启map任务。t5及t6时刻,monitor和rule任务执行相同的操作。

s5:直到t7时刻,monitor任务记录d7的快照,即dn=d7。rule任务计算f(m,n),这里nm=nn,并且数据发生较大的变化,计算得出f(m,n)>β,此刻,需要重启map任务。此时,将dm记为d7。

s6:以此类推,每隔tμ时间,monitor和rule任务执行一次,直到map任务不再需要重启并执行完毕为止。

具体地,rule任务执行时,根据nm和nn的值来确定计算方法,如图3所示。

首先计算dm和dn的数据条数nm和nn。

如果nm和nn相等,则通过公式计算f(m,n)的值,并判断f(m,n)是否超过阈值β;如果nm和nn不等,则通过公式计算f(m,n)的值,并判断f(m,n)是否超过阈值α。

如果f(m,n)超过阈值α或者β,则将dm置为dn,并重启map任务,否则map任务继续执行。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1