MapReduce参数的动态确定方法及装置的制作方法

文档序号:6400251阅读:135来源:国知局
专利名称:MapReduce参数的动态确定方法及装置的制作方法
技术领域
本发明涉及分布式计算技术领域,尤其涉及一种MapReduce参数的动态确定方法
及装置。
背景技术
映射化简MapReduce是一种分布式计算框架,其借鉴函数式编程的思想,对大规模数据集进行高效地分布式计算。MapReduce框架将一个计算作业Job划分成若干个映射Map任务和化简Reduce任务,Map任务阶段和Reduce任务阶段的输入和输出的数据模型都是Key-Value形式的,并且Reduce任务阶段依赖Map任务阶段的输出作为自己的输入。而Map任务的数量由输入的数据集决定,Reduce任务的数量由用户指定。由于输入的数据集一般较大,因此,数据集会被切割成多个数据块chunk,在MapReduce作业提交之后,MapReduce框架的调度器Master会根据输入数据集包含的数据块的数量确定相应的Map任务的数量,使得每个Map任务处理一个数据块。而每个Map任务输入的数据块被转换成Key-Value形式,经过Map运算,输出Key-Value形式的中间结果,中间结果会按Key排序,排序结果将被输出到此Map任务运行所在计算节点的本地磁盘上,MapReduce框架会按Key排序并且按用户指定的Reduce任务的数量对key分区并对落在同一分区中的Value做聚合。每个Reduce任务的输入数据是多个Map任务输出的中间结果的一部分,例如,如果用户指定了 η个Reduce任务,就存在η个分区,属于每个分区的中间结果通过网络传输到执行该分区计算的Reduce任务中,执行用户指定的Reduce算法,最后输出结果。由于在现有的MapReduce框架中,在Map任务执行前就必须知道Reduce任务的准确数量,从而在Map任务阶段可以根据用户指定的Reduce任务的数量对输出的中间结果进行分区,而Reduce任务的数量通常是又由用户人为指定,因此,无论Map任务阶段输出的中间结果有多少,都是按照既定的Reduce任务的数量进行Reduce任务的作业。当Map任务阶段输出的中间结果很少时,完全可以在I 2个Reduce任务中执行,但是可能用户指定的Reduce任务的数量远大于2,如果还按照用户指定的Reduce任务的数量作业则会导致不必要的资源浪费;而当Map任务阶段输出的中间结果很多、用户指定的Reduce任务的数量又相对较少时,如果按照用户指定的Reduce任务的数量作业则会导致执行时间过长的问题。

发明内容
本发明的目的在于提供一种MapReduce参数的动态确定方法及装置,从而实现在MapReduce作业中动态确定一个合理的Reduce任务的数量。本发明的第一个方面是提供一种MapReduce参数的动态确定方法,包括:获取MapReduce作业请求,所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数;若所述用于表示 是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行;若已执行的Map任务的数量满足预设的第一阈值,所述已执行的Map任务的输出结果映射到预设的Reduce任务的数量的分区,则确定调整后的Reduce任务的数量;根据所述调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,以使执行各调整后的Reduce任务。本发明的另一个方面是提供一种MapReduce参数的动态确定装置,包括:作业请求获取模块,用于获取MapReduce作业请求,所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数;监控模块,用于若所述用于表示是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行;确定模块,用于若已执行的Map任务的数量满足预设的第一阈值,所述已执行的Map任务的输出结果映射到的预设的Reduce任务的数量的分区,则确定调整后的Reduce任务的数量;映射模块,用于根据所述调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,以使执行各调整后的Reduce任务。采用上述本发明技术方案的有益效果是:本实施例通过对MapReduce框架的Master进行监控,从而可以根据Map任务的执行情况,对MapReduce作业请求中Reduce任务的数量进行动态调整,从而按照调整后的Reduce任务的数量执行Reduce任务,以解决现有技术中由用户静态指定Reduce任务的数量而导致的资源浪费或执行时间过长等问题。


图1为本发明实施例一提供的一种MapReduce参数的动态确定方法的流程图;图2为本发明实施例二提供的一种MapReduce参数的动态确定装置的结构示意图。
具体实施例方式图1为本发明实施例一提供的一种MapReduce参数的动态确定方法的流程图,如图1所示,所述方法可以包括如下步骤:步骤101,获取MapReduce作业请求;所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数;需要说明的是,本实施例方法的执行主体可以是MapReduce参数的动态确定装置,该装置对MapReduce框架的Master进行监控,从而可以通过Master获取MapReduce的作业请求。其中,MapReduce的作业请求可以包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数。由于在执行Map任务之前就必须知道Reduce任务的准确数量,以便在Map任务阶段可以根据Reduce任务的数量对输出的中间结果进行分区,因此,对每一个MapReduce的作业请求都预设一个Reduce任务的数量,以便执行Map任务;另外,本实施例中MapReduce参数的动态确定装置根据用于表示是否允许启动Reduce任务数量的调整机制的参数确定是否启动Reduce任务数量的调整,举例来说,该参数可以是表示允许启动或不允许启动的参数值,如可以是True、False或缺省,在本实施例中,True可以表示对待作业数据集进行MapReduce作业时允许MapReduce参数的动态确定装置对Reduce任务的数量进行动态调整,以便在执行Reduce任务时可以按照调整后的Reduce任务的数量执行Reduce任务;False或缺省则可以表示对待作业数据集进行MapReduce作业时不允许MapReduce参数的动态确定装置对Reduce任务的数量进行动态调整,而在执行Reduce任务时只能按照预设的Reduce任务的数量执行Reduce 任务。步骤102,若所述用于表示是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行;在本实施例中,当用于表示是否允许启动Reduce任务数量的调整机制的参数为允许时,则该参数可以触发MapReduce参数的动态确定装置启动Reduce任务数量的调整,因此,MapReduce参数的动态确定装置继续对MapReduce框架的Master进行监控,并根据待作业数据集确定Map任务的数量,或通过Master获取本次MapReduce作业中Map任务的数量,同时根据作业请求监控Map任务的执行。步骤103,若已执行的Map任务的数量满足预设的第一阈值,则确定调整后的Reduce任务的数量;在本实施例中,为了能够对Reduce任务的数量进行合理的调整,因此,可以在Map任务执行一段时间后,结合已执行的Map任务的数量以及已执行的Map任务输出的中间结果的数据量而确定本次MapReduce作业中Reduce任务的输入数据总量,具体来说,由于每个Map任务输入的数据量相同,因此,其输出的中间结果的数据量也基本相同,又由于Reduce任务的输入就是Map任务的输出,因此,可以根据已执行的Map任务的数量以及已执行的Map任务输出的中间结果的数据量和本次MapReduce作业中Map任务的数量而确定Reduce任务的输入数据总量,从而根据Reduce任务的数据总量对Reduce任务的数量进行调整。在本实施例中,由于在开始执行Map任务时是按照预设的Reduce任务的数量对输出的中间结果进行分区的,因此,已执行的Map任务输出的中间结果被映射到的预设的Reduce任务的数量的分区中。在本实施例中,通过设置的第一阈值作为触发MapReduce参数的动态确定装置启动Reduce任务数量的调整时机,具体来说,当已执行的Map任务的数量满足预设的第一阈值时,则触发MapReduce参数的动态确定装置根据已执行的Map任务对Reduce任务的数量进行动态调整,从而确定调整后的Reduce任务的数量,通常情况下,调整后的Reduce任务的数量小于预设的Reduce任务的数量。步骤104,根据所述调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,以使执行各调整后的Reduce任务。在本实施例中,由于在开始执行Map任务时是按照预设的Reduce任务的数量对输出的中间结果进行分区的,即每个预设Reduce任务分别对应一个分区,因此,在对Reduce任务的数量进行调整后,则将预设的Reduce任务的数量中未执行的Reduce任务所对应的分区映射到调整后的Reduce任务,即调整后的一个Reduce任务可以对应一个或多个预设Reduce任务对应的分区,从而使得Master可以调度执行调整后的Reduce任务。本实施例通过对MapReduce框架的Master进行监控,从而可以根据Map任务的执行情况,对MapReduce作业请求中Reduce任务的数量进行动态调整,从而按照调整后的Reduce任务的数量执行Reduce任务,以解决现有技术中由用户静态指定Reduce任务的数量而导致的资源浪费或执行时间过长等问题。具体的,上述实施例中所述的预设的第一阈值可以是预设的Map任务的数量阈值,例如,可以是30个Map任务或100个Map任务等,具体数值的选取可以根据实际作业情况进行设置,本实施例并不对此进行限定。因此,当已执行的Map任务的数量满足预设的Map任务的数量阈值时,则触发MapReduce参数的动态确定装置启动Reduce任务数量的调整,从而确定调整后的Reduce任务的数量。优选地,上述实施例中所述的预设的第一阈值可以是预设的比值,例如,可以是1/5或1/3等,具体数值的选取可以根据实际作业情况进行设置,本实施例并不对此进行限定。因此,当已执行的Map任务的数量与Map任务的总数量之间的比值满足预设的比值时,则触发MapReduce参数的动态确定装置启动Reduce任务数量的调整,从而确定调整后的Reduce任务的数量,在本实施例中,Map任务的总数量可以根据待作业数据集确定,也可以通过Master获取。进一步的,在上述任一实施例的基础上,MapReduce作业请求中还可以包括用于提前调度Reduce任务执行的预设的第二阈值,其中,第二阈值也可以是预设的Map任务的数量阈值或比值,即当已执行的Map任务的数量满足第二阈值时,可以触发Master开始执行预设Reduce任务。在本实施例中,当第二阈值小于第一阈值时,即已执行的Map任务的数量满足预设的第二阈值但不满足预设的第一阈值时,则MapReduce参数的动态确定装置还可以监控预设Reduce任务的执行,其中,每个预设Reduce任务分别对应预设的Reduce任务的数量的分区中的一个分区;而当已执行的Map任务的数量满足预设的第一阈值之后,则MapReduce参数的动态确定装置还可以指示停止未执行的预设Reduce任务。并根据已执行的Map任务的数量和本次MapReduce作业中Reduce任务的数据总量确定未执行的Reduce任务的数据量,从而根据未执行的Reduce任务的数据量确定对应未执行的Reduce任务的数量,具体的,在执行未执行的Map任务时,将其输出的中间结果映射到重新确定的Reduce任务的数量的分区中,即未执行的预设Reduce任务通过重新确定的Reduce任务执行。对于一个MapReduce作业而言,在Map和Reduce两个阶段中,由于Map任务的数量是固定的,因此,Map任务的成本也是相对固定的,而通过MapReduce性能模型,分别计算同一 MapReduce作业对应不同Reduce任务的数量的情况下作业的总时间成本和执行时间时发现,作业的总时间成本通常会随着Reduce任务的数量的增加而增加,同时,增加Reduce任务的数量会提高集群的计算能力和任务之间的并行度,缩短作业的执行时间;反之亦然。因此,在本发明的一个具体实现方式中,通过MapReduce性能模型,计算Reduce任务的成本,并在时间成本与执行时间之间寻找平衡点以对Reduce任务的数量进行调整。举例来说,在MapReduce性能模型中,Reduce任务的时间成本包括TRl_init、TR2_read>TR3_net> TR4_merge> TR5_serial、TR6_io、TR7_parse、TR8_Reducer、TR9_net 和TR10_write,其中,TRl_init表示初始化Reduce任务时系统的时间成本,即初始化任务、打开任务、关闭任务、加载程序等的时间,通常TRl_init=RedSysCost+RedInit ;TR2_read表示开始执行Reduce任务时读数据的IO成本,通常TR2_read=ReduceInput/seqRead ;TR3_net表示执行Reduce任务时传输数据的网络成本,通常了
权利要求
1.一种MapReduce参数的动态确定方法,其特征在于,包括: 获取MapReduce作业请求,所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数; 若所述用于表示是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行; 若已执行的Map任务的数量满足预设的第一阈值,所述已执行的Map任务的输出结果映射到预设的Reduce任务的数量的分区,则确定调整后的Reduce任务的数量; 根据所述调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,以使执行各调整后的Reduce任务。
2.根据权利要求1所述的方法,其特征在于,所述确定调整后的Reduce任务的数量,具体包括: 根据未执行的Reduce任务的数据总量,确定调整后的Reduce任务的数量。
3.根据权利要求2所述的方法,其特征在于,所述根据未执行的Reduce任务的数据总量,确定调整后的Reduce任务的数量,具体包括: 根据以下公式,确定调整后的Reduce任务的数量:
4.根据权利要求1所述的方法,其特征在于,所述MapReduce作业请求还包括用于提前调度Reduce任务执行的预设的第二阈值,若所述第二阈值小于所述第一阈值,则所述若已执行的Map任务的数量满足预设的第一阈值之前,还包括: 若所述已执行的Map任务的数量满足所述第二阈值且不满足预设的第一阈值,则监控预设Reduce任务的执行,每个预设Reduce任务分别对应所述预设的Reduce任务的数量的分区中的一个分区; 所述若已执行的Map任务的数量满足预设的第一阈值之后,还包括: 指示停止执行未执行的预设Reduce任务。
5.根据权利要求1 4中任一项所述的方法,其特征在于,所述预设的第一阈值为预设的Map任务的数量阈值或预设的比值,所述若所述已执行的Map任务的数量满足预设的第一阈值,则确定调整后的Reduce任务的数量,具体为: 若所述已执行的Map任务的数量满足所述预设的Map任务的数量阈值,则启动Reduce任务数量的调整机制,确定调整后的Reduce任务的数量;或者, 若所述已执行的Map任务的数量与Map任务的总数量之间的比值满足预设的比值,则启动Reduce任务数量的调整机制,确定调整后的Reduce任务的数量,所述Map任务的总数量根据所述待作业数据集确定。
6.—种MapReduce参数的动态确定装置,其特征在于,包括: 作业请求获取模块,用于获取MapReduce作业请求,所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数; 监控模块,用于若所述用于表示是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行; 确定模块,用于若已执行的Map任务的数量满足预设的第一阈值,所述已执行的Map任务的输出结果映射到的预设的Reduce任务的数量的分区,则确定调整后的Reduce任务的数量; 映射模块,用于根据所述调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,以使执行各调整后的Reduce任务。
7.根据权利要求6所述的装置,其特征在于,所述确定模块具体用于: 根据未执行的Reduce任务的数据总量,确定调整后的Reduce任务的数量。
8.根据权利要求7所述的装置,其特征在于,所述确定模块具体用于: 根据以下公式,确定调整后的Reduce任务的数量:
9.根据权利要求6所述的装置,其特征在于,所述MapReduce作业请求还包括用于提前调度Reduce任务执行的预设的第二阈值,若所述第二阈值小于所述第一阈值,则所述监控模块具体用于: 若所述已执行的Map任务的数量满足所述第二阈值且不满足预设的第一阈值,则监控预设Reduce任务的执行,每个预设Reduce任务分别对应所述预设的Reduce任务的数量的分区中的一个分区; 并在所述已执行的Map任务的数量满足预设的第一阈值之后,指示停止执行未执行的预设Reduce任务。
10.根据权利要求6 9任一项所述的装置,其特征在于,所述预设的第一阈值为预设的Map任务的数量阈值或预设的比值,所述确定模块具体用于: 若所述已执行的Map任务的数量满足所述预设的Map任务的数量阈值,则启动Reduce任务数量的调整机制,确定调整后的Reduce任务的数量;或, 若所述已执行的Map任务的数量与Map任务的总数量之间的比值满足预设的比值,则启动Reduce任务数量的调整机制,确定调整后的Reduce任务的数量,所述Map任务的总数量根据所述待作业数据集确定。
全文摘要
本发明提供一种MapReduce参数的动态确定方法及装置,其中,所述方法包括获取MapReduce作业请求,所述MapReduce作业请求包括待作业数据集、预设的Reduce任务的数量以及用于表示是否允许启动Reduce任务数量的调整机制的参数;若用于表示是否允许启动Reduce任务数量的调整机制的参数为允许,则监控Map任务的执行;若已执行的Map任务的数量满足预设的第一阈值,则确定调整后的Reduce任务的数量;根据调整后的Reduce任务的数量,将各未执行的预设Reduce任务对应到各调整后的Reduce任务,从而实现在MapReduce作业中动态确定一个合理的Reduce任务的数量。
文档编号G06F9/50GK103218263SQ20131007850
公开日2013年7月24日 申请日期2013年3月12日 优先权日2013年3月12日
发明者林学练, 于晨晖, 韩军, 叶玥, 崔晓龙 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1