一种资源分配方法、相关设备及系统与流程

文档序号:14120142阅读:246来源:国知局
一种资源分配方法、相关设备及系统与流程

本发明涉及计算机技术领域,尤其涉及一种资源分配方法、相关设备及系统。



背景技术:

hadoop是一个由apache基金会所开发的分布式系统基础架构,能够对大量数据进行分布式处理。其核心设计是分布式文件系统(英文:hadoopdistributedfilesystem,简称:hdfs)和映射/归约mapreduce编程模型。hdfs为海量数据提供了存储,而mapreduce为海量数据提供了计算。通常情况下,hadoop的mapreduce处理一组输入的键值对(key/valuepairs),经过用户指定的mapreduce函数处理后,最终输出一组键值对。mapreduce实际上定义了map函数接口和reduce函数接口,map函数用于转化输入记录得到中间结果,reduce函数用于将中间结果转化到最终结果。因此用户可以很简单的通过参数指定map函数和reduce函数来对数据进行计算。如图1所示,图中的映射任务(maptask)由该map函数实现,图中的归约任务(reducetask)由该reduce函数实现。

dreams是一个扩展了另一种资源协调者(英文:yetanotherresourcenegotiator,简称:yarn)的资源调度框架,如图2所示,dreams用于解决mapreduce中reduce阶段资源分配不均衡的问题。dreams提出了实时预测每个reduce任务处理的数据量大小,然后基于该数据量大小通过任务性能评估模型评估每个reduce任务执行时所需的计算资源container的大小,其执行流程如下:

步骤1:每个节点管理器(英文:nodemanager,简称:nm)运行分区大小监控(partitionsizemonitor)模块,用于监控所有map任务输出的数据信息,并通过nm的心跳将该数据信息发送给应用程序管理器(英文:applicationmaster,简称:am)端的分区大小预测(partitionsizepredictor)模块;

步骤2:partitionsizepredictor接收所有nm上partitionsizemonitor发送的数据信息,并根据该数据信息实时预测各个reduce任务的数据量大小;

步骤3:am上的taskdurationestimator根据各个reduce的数据量大小建立用于计算资源大小的资源模型;

步骤4:am上的资源分配(resourceallocator)模块通过该资源模型根据每个reduce任务的数据量大小预测每个reduce任务所需的计算资源的大小;

步骤5:am与资源管理器(英文:resourcemanager,简称:rm)上的细粒度容器调度(fine-grainedcontainerscheduler)模块通信,为各个reduce任务申请所需的计算资源container;

步骤6:am将各个reduce任务所需的计算资源通知给各个reduce任务所分布的计算节点;

步骤7:各个reduce所在的计算节点根据指定的计算资源执行reduce任务。

现有技术的缺陷在于,某些reduce任务的执行分为多个计算阶段,每个计算阶段计算所采用的算法的复杂度不一样,相应地,也会导致每个计算阶段计算所需要的计算资源也不一样,如果在reduce任务的执行前就为该reduce任务的整个执行阶段分配好所需的计算资源,则会导致计算资源浪费。



技术实现要素:

本发明实施例公开了一种资源分配方法、相关设备及系统,能够提高计算资源的利用率。

第一方面,本发明实施例提供了一种基于映射/归约mapreduce的分布式系统,其特征在于,该系统包括管理节点和目标计算节点,其中:该管理节点用于获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型;将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于接收该管理节点发送的该部分计算任务和该资源评估模型的信息;根据所述资源评估模型的信息得到所述资源评估模型,在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述步骤,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第一方面,在第一方面的第一种可能的实现方式中,该管理节点还用于向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息;该目标计算节点还用于接收为该每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该目标计算节点通过预设资源池中该资源大小的计算资源计算该输入数据,具体为:将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该计算节点还用于在计算完该输入数据后向该资源池释放该资源大小的计算资源。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,或者第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

第二方面,本发明实施例提供一种管理节点,该管理节点为基于映射/归约mapreduce的分布式系统中的管理节点,该管理节点包括:获取单元,用于获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型;

发送单元,用于将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;该目标计算节点还用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务,该目标计算节点为该基于mapreduce的分布式系统中的计算节点。

通过运行上述单元,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第二方面,在第二方面的第一种可能的实现方式中,该发送单元还用于向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息,以使该计算节点将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

第三方面,本发明实施例提供一种目标计算节点,该目标计算节点为基于映射/归约mapreduce的分布式系统中的计算节点,该目标计算节点包括:接收单元,用于接收该管理节点发送的部分计算任务和资源评估模型的信息;该管理节点为该基于mapreduce的分布式系统中的管理节点,该管理节点用于获取m个计算任务并根据该m个计算任务的任务大小建立该资源评估模型,该部分计算任务为该m个计算任务中的计算任务;该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;计算单元,用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型,计算该计算阶段所需要的计算资源的资源大小;处理单元,用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过运行上述单元,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第三方面,在第三方面的第一种可能的实现方式中,该接收单元还用于接收该管理节点发送的为该部分计算任务中每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该处理单元具体用于:将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,还包括:释放单元,用于在计算完该输入数据后向该资源池释放该资源大小的计算资源。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,或者第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,或者第三方面的第四种可能的实现方式,或者第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

第四方面,本发明实施例提供一种管理节点,该管理节点为基于映射/归约mapreduce的分布式系统中的管理节点,该管理节点包括处理器、存储器和通信接口:该存储器用于存储数据和程序;该处理器调用该存储器中的程序用于执行如下操作:获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型;通过该通信接口将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;该目标计算节点还用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述步骤,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第四方面,在第四方面的第一种可能的实现方式中,该处理器还用于:通过该通信接口向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息,以使该计算节点将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第四方面,或者第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第四方面,或者第四方面的第一种可能的实现方式,或者第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第四方面,或者第四方面的第一种可能的实现方式,或者第四方面的第二种可能的实现方式,或者第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

第五方面,本发明实施例提供一种目标计算节点,该目标计算节点为基于映射/归约mapreduce的分布式系统中的计算节点,该目标计算节点包括处理器、存储器和通信接口:该存储器用于存储数据和程序;该处理器调用该存储器中的程序用于执行如下操作:通过该通信接口接收该管理节点发送的部分计算任务和资源评估模型的信息;该管理节点用于获取m个计算任务并根据该m个计算任务的任务大小建立该资源评估模型,该部分计算任务为该m个计算任务中的计算任务;该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型,计算该计算阶段所需要的计算资源的资源大小;通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述步骤,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第五方面,在第五方面的第一种可能的实现方式中,该处理器还用于:通过该通信接口接收该管理节点发送的为该部分计算任务中每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第五方面,或者第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,该处理器通过预设资源池中该资源大小的计算资源计算该输入数据,具体为:将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

结合第五方面,或者第五方面的第一种可能的实现方式,或者第五方面的第二种可能的实现方式,在第五方面的第三种可能的实现方式中,该处理器还用于:在计算完该输入数据后向该资源池释放该资源大小的计算资源。

结合第五方面,或者第五方面的第一种可能的实现方式,或者第五方面的第二种可能的实现方式,或者第五方面的第三种可能的实现方式,在第五方面的第四种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第五方面,或者第五方面的第一种可能的实现方式,或者第五方面的第二种可能的实现方式,或者第五方面的第三种可能的实现方式,或者第五方面的第四种可能的实现方式,在第五方面的第五种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第五方面,或者第五方面的第一种可能的实现方式,或者第五方面的第二种可能的实现方式,或者第五方面的第三种可能的实现方式,或者第五方面的第四种可能的实现方式,或者第五方面的第五种可能的实现方式,在第五方面的第六种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[crer*r/r_ref]表示对cref*r/r_ref取整。

第六方面,本发明实施例提供一种资源分配方法,该方法应用于基于映射/归约mapreduce的分布式系统,该系统包括管理节点和目标计算节点,该方法包括:该管理节点获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型;该管理节点将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于根据所述资源评估模型的信息得到所述资源评估模型,在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;该目标计算节点还用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述步骤,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第六方面,在第六方面的第一种可能的实现方式中,该方法还包括:该管理节点向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息,以使该计算节点将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第六方面,或者第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第六方面,或者第六方面的第一种可能的实现方式,或者第六方面的第二种可能的实现方式,在第六方面的第三种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第六方面,或者第六方面的第一种可能的实现方式,或者第六方面的第二种可能的实现方式,或者第六方面的第三种可能的实现方式,在第六方面的第四种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

第七方面,本发明实施例提供一种资源分配方法,该方法应用于基于映射/归约mapreduce的分布式系统,该系统包括管理节点和目标计算节点,该方法包括:该目标计算节点接收该管理节点发送的部分计算任务和资源评估模型的信息;该管理节点用于获取m个计算任务并根据该m个计算任务的任务大小建立该资源评估模型,该部分计算任务为该m个计算任务中的计算任务;该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型,计算该计算阶段所需要的计算资源的资源大小;该目标计算节点通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述步骤,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

结合第七方面,在第七方面的第一种可能的实现方式中,该方法还包括:该计算节点接收该管理节点发送的为该部分计算任务中每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

结合第七方面,或者第七方面的第一种可能的实现方式,在第七方面的第二种可能的实现方式中,该目标计算节点通过预设资源池中该资源大小的计算资源计算该输入数据,包括:将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

结合第七方面,或者第七方面的第一种可能的实现方式,或者第七方面的第二种可能的实现方式,在第七方面的第三种可能的实现方式中,该方法还包括:该计算节点在计算完该输入数据后向该资源池释放该资源大小的计算资源。

结合第七方面,或者第七方面的第一种可能的实现方式,或者第七方面的第二种可能的实现方式,或者第七方面的第三种可能的实现方式,在第七方面的第四种可能的实现方式中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

结合第七方面,或者第七方面的第一种可能的实现方式,或者第七方面的第二种可能的实现方式,或者第七方面的第三种可能的实现方式,或者第七方面的第四种可能的实现方式,在第七方面的第五种可能的实现方式中,该计算任务包括映射map任务,或者归约reduce任务。

结合第七方面,或者第七方面的第一种可能的实现方式,或者第七方面的第二种可能的实现方式,或者第七方面的第三种可能的实现方式,或者第七方面的第四种可能的实现方式,或者第七方面的第五种可能的实现方式,在第七方面的第六种可能的实现方式中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

通过实施本发明实施例,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种mapreduce任务的计算流程示意图;

图2是本发明实施例提供的一种执行mapreduce任务的场景示意图;

图3是本发明实施例提供的一种分布式系统的结构示意图;

图4是本发明实施例提供的一种计算资源分配方法的流程示意图;

图5是本发明实施例提供的一种分配计算资源的场景示意图;

图6是本发明实施例提供的一种管理节点的结构示意图;

图7是本发明实施例提供的一种目标计算节点的结构示意图;

图8是本发明实施例提供的又一种管理节点的结构示意图;

图9是本发明实施例提供的又一种目标计算节点的结构示意图。

具体实施方式

下面将结合附图对本发明实施例中的技术方案进行清楚地描述。

请参见图3,图3是本发明实施例提供的一种基于mapreduce的分布式系统30的结构示意图,该系统30包括管理节点301和计算节点302,在实际应用中可能存在多个管理节点301和多个计算节点302,本发明实施例以一个管理节点301为例来讲述如何基于该系统30执行mapreduce中的map任务和reduce任务。需要说明的是,本发明实施例中的管理节点301和计算节点302可以为spark架构中的两类节点,目前,spark架构存在如下几种模式:standalone模式、sparkonyarn模式和sparkonmesos模式,无论哪种模式,均存在driver进程和executor进程,本发明实施例中的管理节点301用于运行driver进程,计算节点301用于运行executor进程。该管理节点301用于将分配给自身管理的某个作业(job)分配给多个计算节点来具体执行。

请参见图4,图4是本发明实施例提供的一种计算资源分配方法的流程示意图,该方法可以基于上述系统30来具体实现,该方法包括但不限于如下步骤。

步骤s401:该管理节点获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型。

具体地,该m个计算任务可以为map任务或者reduce任务,通常情况下,客户(client)会向spark框架中的master节点(例如,sparkonyarn模式中的rm)发送某个作业(job)的处理请求,该请求同时还指示了该管理节点为该某个job的主控节点。该master节点会根据该处理请求将该某个job包含的m个计算任务(task)指定给该管理节点管理,该计算任务即为上述reduce任务(reducetask)或者map任务(maptask)。

相应地,该管理节点获取该m个计算任务的信息并根据该信息统计该m个计算任务的数据大小,该m个计算任务的数据大小可以为该m个计算任务的总的数据量大小;该m个计算任务的数据大小还可以为该m个计算任务包含的总的记录数,每个计算任务可以细分为多个记录;当本发明应用于基因(gene)分析技术中时,该m个计算任务的数据大小可以该m个计算任务的覆盖深度,由于基因测序中有大片段拼接的间隔(gap)、测序读长有限、重复序列等问题,因此基因测序分析后组装得到的基因序列通常无法完全覆盖整个基因组,覆盖深度就是分析得到的基因序列占整个基因组的比例。例如,一个人的基因组测序覆盖深度为98.5%,那么说明该基因组还有1.5%的基因序列通过我们的组装和分析无法得到。

在本发明实施例中,该每个计算任务需要经过p个计算阶段计算,某个计算阶段的输入数据可能包含其他计算阶段的输出数据,该某个计算阶段的输出数据可能属于又一个计算阶段的输入,该p个计算阶段均执行完后的输出数据即为该计算任务的计算结果,m大于1,p大于1。例如,在基因(gene)分析技术中,脱氧核糖核酸(英文:deoxyribonucleicacid,简称:dna)测序序列的回帖(mapping)操作属于上述map任务,染色体区域的变异识别(variantcalling)属于上述reduce任务,该染色体区域的变异识别(variantcalling)是现实过程包括重复标记阶段(需要调用markduplicate工具)、局部对比和碱基矫正阶段(需要调用localrealigner工具和碱基质量分数校正(英文:qualityscorerecalibration,简称:bqsr)工具)和变异识别阶段(需要调用haplotypecaller工具)等(各个阶段调用的工具不同意味着各个阶段采用的算法的复杂度不同),此处的每个阶段即为本发明实施例中描述的计算阶段。

在同一计算任务中,不同计算阶段的所需要用到的算法的复杂度各不相同,所以不同计算阶段在计算时所需要的计算资源也很可能不同,因此本发明实施例中,该管理节点需要根据该m个计算任务的数据大小建立资源评估模型,该资源评估模型用于根据输入数据的大小计算该评估出计算该输入数据所需要的计算资源的资源大小,也即是说,向该资源评估模型输入数据大小的值可以输出该一个资源大小的值。举例来说,该资源评估模型包括如下公式:

在公式1-1,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入的计算任务的任务大小,cnew为输出的该对应的计算资源的资源大小,[]为取整符号。该公式表达的含义是,当cmax>cref*r/r_ref>cmin时,cnew=cref*r/r_ref;当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin,可选的,该计算资源的资源大小可以具体为cpu资源、内存资源、网络资源、gpu资源、fpga资源等,当为cpu资源时该资源大小可以具体为cpu核数,例如,可以配置cpu核数分别为:cmax=8,cmin=1,cref=4。

在一种可选的方案中,每个计算阶段使用的资源评估模型相同,在这种情况下该管理节点只需配置一个资源评估模型即可;在又一种可选的方案中,各个计算阶段使用的资源评估模型各不相同,在这种情况下该管理节点需要配置多个不同的资源评估模型,可选的,各个资源评估模型的原理均为公式1-1所示,只不过各个资源评估模型的cmax、cref、cmin的初始值不同。

步骤s402:该管理节点将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点。

具体地,该管理节点需要将这m个计算任务分配给该分布式系统中的计算节点,假设该管理节点为其中某个计算节点分配了部分计算任务,该部分计算任务的数量大于等于2,为了方便描述可称该某个计算节点为目标计算节点。那么,该管理节点将该部分计算任务和上述资源评估模型的信息发送给该目标计算节点。在一种可选的方案中,该管理节点还为这部分计算任务中的每个计算任务分配初始计算资源,并向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息。

步骤s403:该目标计算节点接收该管理节点发送的该部分计算任务和该资源评估模型的信息。该目标计算节点会根据所述资源评估模型的信息得到所述资源评估模型。

需要说明的是,该目标计算节点中预先配置了资源池来维护了计算资源,通常情况下,该目标计算节点不管是注册了计算资源、占用了计算资源,还是占用后释放了计算资源都需要在该资源池中进行记录。例如,该资源池中初始的cpu核数c=0,注册的cpu核数creg=1,那么注册成功后该资源池中的cpu核数为c=0+1=1。这样一来,该目标计算节点就可以获知自身当前可以使用的cpu资源有哪些。

当上述管理节点没有为部分计算任务中每个计算任务分配初始计算资源时,该目标计算节点可以预先给该资源池配置一些计算资源供后续使用。当上述管理节点为部分计算任务中每个计算任务分配了初始计算资源时,可以预先为该资源池配置一些计算资源也可以不配置计算资源,不管有没有预先配置,该目标节点接收到该管理节点发送的为部分计算任务中每个计算任务分配的初始计算资源的信息时,将为该每个计算任务分配的初始计算资源注册到预设资源池中供使用,也即是说,该目标计算节点将分配给这部分计算任务中每个计算任务的计算资源整合起来,后续进行重新分配。

步骤s404:该目标计算节点在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小。

具体地,该目标任务为该部分计算任务中的任意一个计算任务,也即是说,该部分计算任务中的任意一个计算任务均满足该目标任务的特点。以下举例来说明,假设目标任务包括的计算阶段为:计算阶段a(例如,重复标记阶段)和计算阶段b(例如,变异识别阶段),计算阶段a的输入数据的大小为150,计算阶段b的输入数据的大小为125,并且该计算阶段a的资源评估模型为:cnew=[min(8,max(1,(4*r)/100))],那么,在执行目标任务的计算阶段a前,将r=150带入到资源评估模型,得到cnew=[min(8,max(1,(4*150)/100))]=6;该计算阶段b的资源评估模型为:cnew=[min(4,max(1,(4*r)/100))],那么,在执行目标任务的计算阶段b前,将r=125带入到资源评估模型,得到cnew=[min(4,max(1,(4*125)/100))]=4;因此,计算阶段a所需要的计算资源的cpu核数为6,计算阶段b所需要的计算资源的cpu核数为4。

如图5所示,可以在该目标计算节点上配置动态计算资源调节器(英文:dynamiccomputingresourcescheduler,简称:dcrs),该dcrs可以为虚拟模块也可以为实体模块,该dcrs可以包括资源调节器模块(resourceallocator)和负载评估模块(loadestimator),其中,该资源调节器模块用于管理所在计算节点的资源池中的计算资源,该负载评估模块用于在各个计算阶段执行前根据该计算阶段的输入数据大小评估该计算阶段所需的计算资源的大小。

步骤s405:该目标计算节点通过预设资源池中该资源大小的计算资源计算该输入数据。

具体地,当该目标计算节点获知目标任务的某个计算阶段所需的计算资源的资源大小后,从该资源池中占用相应资源大小的计算资源供该某个计算阶段使用。可选的,可以在该目标计算节点中配置资源占位符cpu_cores,并在每个计算阶段运行前更新该资源占位符cpu_cores的值,该值用于指示即将进行的计算阶段所需的计算资源的资源大小,该值等于以上实时通过资源评估模型计算出的计算资源的资源大小。按照步骤s404中的举例,该目标计算节点从该资源池中占用6个单位的计算资源供目标任务的计算阶段a使用,从该资源池中占用5个单位的计算资源供目标任务的计算阶段b使用,从该资源池中占用4个单位的计算资源供目标任务的计算阶段c使用。

在一种可选的方案中,该目标计算节点通过预设资源池中该资源大小的计算资源计算该输入数据,具体为:判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;或者将该资源大小代入预设优先级算法计算该每个计算任务的优先级并判断该计算任务的优先级是否高于预设优先级阈值,该优先级用于体现该计算任务的重要性,可选的,该优先级等于计算出的该资源大小除以上述资源大小的平均值,即优先级pnew=cnew/cref;若任意一项的结果为是,则通过该资源池中该资源大小的计算资源计算该输入数据。

在又一种可选的方案中,该计算节点在计算完该输入数据后向该资源池释放该资源大小的计算资源。举例来说,目标任务的计算阶段a在运行的过程中,该资源池中剩余的资源大小c=10,当目标任务的计算阶段a运行完后将该计算阶段a占用的计算资源cnew=6释放到该资源池中,这样一来,该资源池中剩余的计算资源的资源大小c=10+6=16。

可选的,当该目标计算节点在前面将部分计算任务中每个计算任务的初始计算资源注册到了该资源池中时,如果该部分计算任务全部都执行完了,那么该目标计算节点可以将这部分计算任务中每个计算任务的初始计算资源从该资源池中释放掉。

在图4所描述的方法中,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。

请参见图6,图6是本发明实施例提供的一种管理节点60的结构示意图,该管理节点60为基于映射/归约mapreduce的分布式系统中的管理节点,该管理节点60包括获取单元601和发送单元602,其中,各个单元的描述如下:

获取单元601用于获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型。

发送单元602用于将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;该目标计算节点还用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务,该目标计算节点为该基于mapreduce的分布式系统中的计算节点。

通过运行上述单元,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

在一种可选的方案中,该发送单元602还用于向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息,以使该计算节点将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

在又一种可选的方案中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

在又一种可选的方案中,该计算任务包括映射map任务,或者归约reduce任务。

在又一种可选的方案中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

需要说明的是,各个单元的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图6所描述的管理节点60中,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

请参见图7,图7是本发明实施例提供的一种目标计算节点70的结构示意图,该目标计算节70点为基于映射/归约mapreduce的分布式系统中的计算节点,该目标计算节点70包括接收单元701、计算单元702和处理单元703,各个单元的详细描述如下:

接收单元701用于接收该管理节点发送的部分计算任务和资源评估模型的信息;该管理节点为该基于mapreduce的分布式系统中的管理节点,该管理节点用于获取m个计算任务并根据该m个计算任务的任务大小建立该资源评估模型,该部分计算任务为该m个计算任务中的计算任务;该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1。

计算单元702用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型,计算该计算阶段所需要的计算资源的资源大小。

处理单元703用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过运行上述单元,该目标计算节点70在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

在一种可选的方案中,该接收单元701还用于接收该管理节点发送的为该部分计算任务中每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

在又一种可选的方案中,该处理单元703具体用于:将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

在又一种可选的方案中,该目标计算节点70还包括:释放单元,用于在计算完该输入数据后向该资源池释放该资源大小的计算资源。

在又一种可选的方案中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

在又一种可选的方案中,该计算任务包括映射map任务,或者归约reduce任务。

在又一种可选的方案中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

需要说明的是,各个单元的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图7所描述的目标计算节点70中,该目标计算节点70在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

请参见图8,图8是本发明实施例提供的一种管理节点80,该管理节点80为基于映射/归约mapreduce的分布式系统该中的管理节点,管理节点80包括处理器801、存储器802和通信接口803,该处理器801、存储器802和通信接口803通过总线相互连接。

存储器802包括但不限于是随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者快闪存储器)、或便携式只读存储器(cd-rom),该存储器802用于相关指令及数据。

处理器801可以是一个或多个中央处理器(英文:centralprocessingunit,简称:cpu),在处理器801是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

该管理节点80中的处理器801用于读取该存储器802中存储的程序代码,执行以下操作:

获取m个计算任务并根据该m个计算任务的数据大小建立资源评估模型;

通过该通信接口803将该m个计算任务中的部分计算任务和该资源评估模型的信息发送给目标计算节点,该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1;该目标计算节点用于根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型以计算该计算阶段所需要的计算资源的资源大小;该目标计算节点还用于通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述操作,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

在一种可选的方案中,该处理器还用于通过该通信接口803向该计算节点发送为该部分计算任务中每个计算任务分配的初始计算资源的信息,以使该计算节点将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

在又一种可选的方案中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

在又一种可选的方案中,该计算任务包括映射map任务,或者归约reduce任务。

在又一种可选的方案中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

需要说明的是,上述操作的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图8所描述的管理节点80中,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

请参见图9,图9是本发明实施例提供的一种目标计算节点90,该目标计算节点90为基于映射/归约mapreduce的分布式系统该中的计算节点,目标计算节点90包括处理器901、存储器902和通信接口903,该处理器901、存储器902和通信接口903通过总线相互连接。

存储器902包括但不限于是随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者快闪存储器)、或便携式只读存储器(cd-rom),该存储器902用于相关指令及数据。

处理器901可以是一个或多个中央处理器(英文:centralprocessingunit,简称:cpu),在处理器901是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

该目标计算节点90中的处理器901用于读取该存储器902中存储的程序代码,执行以下操作:

通过该通信接口903接收该管理节点发送的部分计算任务和资源评估模型的信息;该管理节点用于获取m个计算任务并根据该m个计算任务的任务大小建立该资源评估模型,该部分计算任务为该m个计算任务中的计算任务;该部分计算任务中的每个计算任务需要经过p个计算阶段计算,m大于1,p大于1。

根据所述资源评估模型的信息得到所述资源评估模型,并在执行目标任务的每个计算阶段前将该计算阶段的输入数据代入到该资源评估模型,计算该计算阶段所需要的计算资源的资源大小。

通过预设资源池中该资源大小的计算资源计算该输入数据,该目标任务为该部分计算任务中的任意一个计算任务。

通过执行上述操作,该目标计算节点90在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

在一种可选的方案中,该处理器还用于:通过所述通信接口903接收该管理节点发送的为该部分计算任务中每个计算任务分配的初始计算资源的信息,并将为该每个计算任务分配的初始计算资源注册到该资源池中供使用。

在又一种可选的方案中,该处理器901通过预设资源池中该资源大小的计算资源计算该输入数据,具体为:

将该资源大小代入预设优先级算法计算该每个计算阶段的优先级并判断该计算阶段的优先级是否高于预设优先级阈值,该优先级用于体现该计算阶段的重要性;或者判断该资源大小是否不大于预设资源池中剩余的计算资源的数量;若是,则通过该资源池中该资源大小的计算资源计算该输入数据。

在又一种可选的方案中,该处理器903还用于:在计算完该输入数据后向该资源池释放该资源大小的计算资源。

在又一种可选的方案中,该任务大小包括数据量大小、覆盖深度和记录数中至少一项。

在又一种可选的方案中,该计算任务包括映射map任务,或者归约reduce任务。

在又一种可选的方案中,该资源评估模型用于根据输入数据的大小评估出计算该输入数据所需计算资源的资源大小,当cmax>cref*r/r_ref>cmin时,cnew=[cref*r/r_ref];当cref*r/r_ref≥cmax时,cnew=cmax;当cref*r/r_ref≤cmin时,cnew=cmin;cnew为评估出的该计算资源的资源大小,cmax为预先配置的该资源大小可取的上限值,cmin为预先配置的该资源大小可取的下限值,cref为预先配置的该资源大小的平均值,rref等于该m个计算任务的任务大小除以m得到的任务大小平均值,r为该输入数据的大小,[cref*r/r_ref]表示对cref*r/r_ref取整。

需要说明的是,各个操作的具体实现还可以对应参照图4所示的方法实施例的相应描述。

在图9所描述的目标计算节点90中,该目标计算节点90在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

综上所述,通过实施本发明实施例,该目标计算节点在每个计算任务的每个计算阶段根据该每个计算阶段输入数据的大小计算该计算阶段所需要的计算资源,然后根据计算结果为该计算阶段分配相应地计算资源来用于该计算阶段的计算,也即是说,每个计算任务的每个计算阶段被分配的计算资源都在根据实际需要实时调整,提高了计算资源的利用率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

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