一种作业调度方法和装置制造方法

文档序号:6516170阅读:169来源:国知局
一种作业调度方法和装置制造方法
【专利摘要】本发明提供了一种作业调度方法和装置,其中,作业调度方法包括:当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合;以及,按照第二设定规则筛选出当前作业中一个未执行的map任务作为待执行的map任务;从候选计算节点集合中选择一个满足设定标准的计算节点;判断待执行的map任务是否为该计算节点的本地任务;当待执行的map任务不是该计算节点的本地任务时,将待执行的map任务对应的数据块从源计算节点传输到满足设定标准的计算节点上进行存储;当满足设定标准的计算节点请求分配map任务时,将筛选出的待执行的map任务分配给满足设定标准的计算节点。通过本申请,提高了资源的利用率以及作业的执行效率。
【专利说明】一种作业调度方法和装置
【技术领域】
[0001]本发明涉及云计算资源管理【技术领域】,特别是涉及一种作业调度方法和装置。
【背景技术】
[0002]随着互联网的迅猛发展,云计算在众IT(Information Technology,信息技术)巨头的推动下,尤其是随着大数据时代的到来,得到了快速发展与演进。而Hadoop是由Doug Cutting即Apache Lucene服务器搜索引擎的创始人开发的,用于大规模数据并行处理的开源框架,是目前最为广泛应用的开源云计算平台。Hadoop主要包含HDFS (HadoopDistributed File System, Hadoop分布式文件系统)和MapReduce (映射化简)两个核心部分,MapReduce是Google谷歌提出的一种分布式编程模型和实现大规模数据处理与生成的分布式处理框架,它是云计算发展的基础。HDFS和MapReduce分别为GFS (Google FileSystem,谷歌文件系统)和Google MapReduce的开源实现。
[0003]在Hadoop集群所采用的动态任务调度和资源分配策略中,如果用户提交的作业有输入数据,其输入数据会被切分成若干数据块分布存储于各个计算节点上,每个数据块默认保留三个副本,三个副本分别存储于三个不同的计算节点上。有的数据块则刚好存储于任务所处的计算节点上,而有的数据块则没有存储在任务所处的计算节点上,而是存储在了与任务所处计算节点位于相同机架上的计算节点上,更甚者位于其他数据中心的计算节点上。而一个作业的不同任务在运行过程中所需数据块是否恰好位于任务所处的计算节点,将对系统资源利用率和作业的执行效率产生举足轻重的影响。Data Locality即数据本地性是衡量任务数据本地化的一个度量值。根据任务的输入数据块所在计算节点位置,任务可按数据本地性分为Node Locality即节点本地性、Rack Locality即机架本地性和Off-Switch即远程任务,并且任务的数据本地性依次减弱。
[0004]现有的Hadoop集群所采用的作业调度方法均考虑到任务的数据本地性,然而却无法保证绝对的数据本地性,即作业在提交以后仍可能存在部分任务分配到的计算节点上未存储其所需处理的数据块。现有的Hadoop集群在作业调度时只是通过简单的判断任务是否为本地性任务,而采取暂缓调度非本地性任务,以尽可能获得更好的数据本地性。
[0005]采用现有的Hadoop集群作业调度方法,采取暂缓调度非本地性任务,降低了作业的执行效率和资源利用率。

【发明内容】

[0006]本发明提供了一种作业调度方法和装置,以解决现有的Hadoop集群在进行作业调度时,采取暂缓调度非本地性任务而造成的作业执行效率低,资源利用率低的问题。
[0007]为了解决上述问题,本发明公开了一种作业调度方法,包括:当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合;以及,按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务,其中,一个作业包括至少一个map任务;从所述候选计算节点集合中选择一个满足设定标准的计算节点;判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务;当所述待执行的map任务不是所述满足设定标准的计算节点的本地任务时,将所述待执行的map任务对应的数据块从源计算节点传输到所述满足设定标准的计算节点上进行存储;其中,所述源计算节点为存储有所述数据块的副本且与所述满足设定标准的计算节点间的网络拓扑距离最小的计算节点;当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点。
[0008]优选地,所述根据第一设定规则筛选出候选计算节点集合步骤包括:判断执行所述当前作业的Hadoop集群中是否存在空闲计算节点;若存在,则将所有空闲计算节点作为所述候选计算节点集合;若不存在,则根据第一设定规则筛选所述Hadoop集群中正在执行所述当前作业中的map任务的计算节点,组成所述候选计算节点集合;其中,所述候选计算节点集合中各个计算节点当前正在执行的map任务的剩余完成时间,大于在计算节点间传输一个数据块的时间。
[0009]优选地,所述按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务步骤包括:判断所述当前作业中是否存在执行失败的map任务;若存在,则选择一个执行失败次数最多的map任务作为待执行的map任务;若不存在,则从所述当前作业中选择一个剩余的map任务作为待执行的map任务。
[0010]优选地,所述从所述候选计算节点集合中选择一个满足设定标准的计算节点的步骤包括:当所述Hadoop集群中不存在空闲计算节点时,从所述候选节点集合中,选择最早释放忙碌计算槽的计算节点作为所述满足设定标准的计算节点。
[0011]优选地,在所述判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务步骤之后,还包括:当所述待执行的map任务是所述满足设定标准的计算节点的本地任务时,直接执行当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点的步骤。
[0012]为了解决上述问题,本发明还公开了一种作业调度装置包括:第一筛选模块,用于在当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合;第二筛选模块,按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务,其中,一个作业包括至少一个map任务;选择模块,用于从所述候选计算节点集合中选择一个满足设定标准的计算节点;判断模块,用于判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务;传输模块,用于当所述待执行的map任务不是所述满足设定标准的计算节点的本地任务时,将所述待执行的map任务对应的数据块从源计算节点传输到所述满足设定标准的计算节点上进行存储;其中,所述源计算节点为存储有所述数据块的副本且与所述满足设定标准的计算节点间的网络拓扑距离最小的计算节点;分配模块,用于当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点。
[0013]优选地,所述第一筛选模块包括:第一判断子模块,用于在当前作业执行过程中判断执行所述当前作业的Hadoop集群中是否存在空闲计算节点;执行子模块,用于在所述判断子模块的判断结果为存在时,将所有空闲计算节点作为所述候选计算节点集合;在所述判断子模块的判断结果为不存在时,根据第一设定规则筛选所述Hadoop集群中正在执行所述当前作业中的map任务的计算节点,组成所述候选计算节点集合;其中,所述候选计算节点集合中各个计算节点当前正在执行的map任务的剩余完成时间,大于在计算节点间传输一个数据块的时间。
[0014]优选地,所述第二筛选模块包括:第二判断子模块,用于判断所述当前作业中是否存在执行失败的map任务;选择子模块,用于在所述第二判断子模块的判断结果为存在时,选择一个执行失败次数最多的map任务作为待执行的map任务;在所述第二判断子模块的判断结果为不存在时,从所述当前作业中选择一个剩余的map任务作为待执行的map任务。
[0015]优选地,所述选择模块从所述候选计算节点集合中选择一个满足设定标准的计算节点时:当所述Hadoop集群中不存在空闲计算节点时,从所述候选节点集合中,选择最早释放忙碌计算槽的计算节点作为所述满足设定标准的计算节点。
[0016]优选地,所述作业调度装置还包括:调用模块,用于在所述判断模块的判断结果为所述待执行的map任务是所述满足设定标准的计算节点的本地任务时,直接调用所述分配模块。
[0017]与现有技术相比,本发明具有以下优点:
[0018]本发明提供的作业调度方法和装置,在对Hadoop集群中当前正在执行的作业进行调度时,预先选择一个满足设定标准的计算节点以及待执行的map任务,判断待执行的map任务是否为该满足设定标准的计算节点的本地任务,当待执行的map任务不是该满足设定标准的计算节点本地任务时,那么为满足标准的计算节点预先获取执行所述待执行的map任务所需要的数据块,这样就可以在满足设定标准的计算节点请求分配任务时,直接将待执行的map任务分配给该满足设定标准的计算节点,满足了任务的本地性。本发明中的方案,不仅仅简单的对待执行的map任务的本地性进行判断,并且还直接为执行该map任务的计算节点预先获取执行该任务的数据块,让该map任务成为数据本地性任务。通过本发明中的方案,节省了现有的作业调度方法中,当判断出map任务不是数据本地性任务时,要采取暂缓调度非本地性任务等待本地计算节点出现的时间;并且解决了现有的作业调度方法中由于计算节点空闲而造成的资源浪费的问题,提高了资源的利用率以及作业的执行效率。
【专利附图】

【附图说明】
[0019]图1是根据本发明实施例一的一种作业调度方法的步骤流程图;
[0020]图2是根据本发明实施例二的一种作业调度方法的步骤流程图;
[0021]图3是根据本发明实施例三的一种作业调度方法的步骤流程图;
[0022]图4是根据本发明实施例四的一种作业调度装置的结构框图。
【具体实施方式】
[0023]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0024]实施例一
[0025]参照图1,示出了本发明实施例一的一种作业调度方法的步骤流程图。
[0026]本实施例的作业调度方法的步骤如下:
[0027]步骤S102:当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合;以及,按照第二设定规则筛选出当前作业中一个未执行的map任务作为待执行的map任务。
[0028]其中,一个作业包括至少一个map任务。
[0029]本实施例中的第一设定规则与第二设定规则可以由本领域技术人员根据实际需求进行设定。如,可以将第一设定规则设定为:当执行当前任务的Hadoop集群中存在空闲计算节点时,将所有空闲计算节点组成一个候选计算节点集合,当没有空闲计算节点时,将正在执行map任务的计算节点按照一定条件进行筛选,组成候选计算节点集合。再例如,可以将第一设定规则设定为:在有空闲结算节点时,依然选择正在执行任务的计算节点作为候选计算节点集合。可以将第二设定规则设定为:优先从执行失败任务列表中选择执行失败次数最多的map任务作为待执行的map任务,如果不存在执行失败任务,那么从当前任务剩余的map任务中任意选择一个map任务,或是在选择完满足设定标准的计算节点后,选择一个该计算节点的本地性任务。当然,其它适当的设定方式也同样适用,在此不再一一列举。
[0030]需要说明的是,根据第一设定规则筛选出候选计算节点集合的步骤,与按照第二设定规则筛选出当前作业中一个未执行的map任务作为待执行的map任务的步骤的执行不分先后顺序,也可以同时进行。
[0031]步骤S104:从候选计算节点集合中选择一个满足设定标准的计算节点。
[0032]从候选计算节点中选择满足设定规则的计算节点时,本领域技术人员可以根据实际情况对选择进行设置:
[0033]当候选计算节点集合是由空闲计算节点组成时,那么该步骤可以为:从中选择任一空闲计算节点作为满足设定标准的计算节点,也可以为:依据网络拓扑结构信息选择一个在传输数据块时最节省网络资源的空闲计算节点。
[0034]当候选计算节集合由正在执行map任务的计算节点组成时,那么优选地可以从候选任务集合中选择最早释放忙碌计算槽的计算节点作为满足设定标准的计算节点。
[0035]步骤S106:判断待执行的map任务是否为满足设定标准的计算节点的本地任务。若是本地任务,则直接执行步骤SllO ;若不是本地任务,则执行步骤S108。
[0036]其中,判断待执行的map任务是否为满足设定标准的计算节点的本地任务实质上是,在Hadoop集群中主节点中存储有元信息文件,元信息文件中保存有当前作业中各个map任务的数据块的副本所在的分布信息。当确定了待执行的map任务后,主节点会从元信息文件中获取该待执行的map任务的数据块副本存储在哪些计算节点上;然后比对这些存储有数据块副本的计算节点中是否包含了满足设定标准的计算节点。
[0037]当判断结果为:待执行的map任务为满足设定标准的计算节点的本地任务时,则直接执行步骤SI 10。
[0038]当判断结果为:待执行的map任务不是满足设定标准的计算节点的本地任务时,则执行步骤S108。
[0039]步骤S108:将待执行的map任务对应的数据块从源计算节点传输到满足设定标准的计算节点上进行存储。
[0040]其中,源计算节点为存储有数据块的副本且与满足设定标准的计算节点间的网络拓扑距离最小的计算节点。需要说明的是,源计算节点也可以不是网络拓扑距离最小的计算节点,可以是存有数据块的副本任一计算节点,选择网络拓扑距离最小的计算节点是一种最优的选择,可以避免网络资源的浪费。
[0041]步骤SllO:当满足设定标准的计算节点请求分配map任务时,将筛选出的待执行的map任务分配给满足设定标准的计算节点。
[0042]本实施例提供的作业调度方法,在对Hadoop集群中当前正在执行的作业进行调度时,预先选择一个满足设定标准的计算节点以及待执行的map任务,判断待执行的map任务是否为该满足设定标准的计算节点的本地任务,当待执行的map任务不是该满足设定标准的计算节点本地任务时,那么为满足标准的计算节点预先获取执行所述待执行的map任务所需要的数据块,这样就可以在满足设定标准的计算节点请求分配任务时,直接将待执行的map任务分配给该满足设定标准的计算节点,满足了任务的本地性。本实施例中的方法,不仅仅简单的对待执行的map任务的本地性进行判断,并且还直接为执行该map任务的计算节点预先获取执行该任务的数据块,让该map任务成为数据本地性任务。通过本实施例提供的方法,节省了现有的作业调度方法中,当判断出map任务不是数据本地性任务时,要采取暂缓调度非本地性任务等待本地计算节点出现的时间;并且解决了现有的作业调度方法中由于计算节点空闲而造成的资源浪费的问题,提高了资源的利用率以及作业的执行效率。
[0043]实施例二
[0044]参照图2,示出了本发明实施例二的一种作业调度方法的步骤流程图。
[0045]本实施例中的作业调度方法的具体步骤包括:
[0046]步骤S202:当前作业执行过程中,主节点判断执行当前作业的Hadoop集群中是否存在空闲计算节点,若存在,则执行步骤S204 ;若不存在,则执行步骤S208。
[0047]步骤S204:当执行当前作业的Hadoop集群中存在空闲计算节点时,主节点将所有空闲计算节点作为候选计算节点集合。
[0048]步骤S206:从候选计算节点集合中选择一个空闲计算节点作为满足设定标准的计算节点。
[0049]需要说明的是,在选择一个空闲计算节点作为满足设定标准的计算节点时,可以选择任意一个空闲计算节点,也可以按照设定标准优先选择一个后续所选择的待执行的map任务的本地节点,还可以根据网络拓扑结构选择一个与存储有后续所选择的待执行的map任务的输入数据块的源计算节点拓扑距离最近的空闲计算节点作为满足设定标准的计算节点。
[0050]步骤S204与步骤S206是当Hadoop集群中存在空闲计算节点时,选择满足设定标准的计算节点的具体步骤,下面步骤S208以及步骤S210是当Hadoop集群中不存在空闲计算节点时,选择满足设定标准的计算节点的具体步骤。
[0051]步骤S208:当执行当前作业的Hadoop集群中不存在空闲计算节点时,主节点根据第一设定规则筛选Hadoop集群中正在执行当前作业中的map任务的计算节点,组成候选计算节点集合。
[0052]本实施例中,主节点按照第一设定规则筛选Hadoop集群中正在执行当前作业中的map任务的计算节点,组成候选计算节点集合的具体步骤包括:
[0053]步骤S2082:主节点通过估算Hadoop集群中所有计算节点上正在运行任务的执行进度,计算各个计算节点上当前正在运行任务的剩余完成时间。[0054]步骤S2084:主节点根据Hadoop集群网络配置,计算在两个计算节点间传输一个数据块所需的时间。
[0055]需要说明的是,这里在计算节点间传输一个数据块的时间可以是在同一机架上的两个计算节点间传输一个数据块的时间;也可以是在不同机架但同一数据中心的两个计算节点间传输一个数据块的时间;还可以是在不同数据中心的两个计算节点间传输一个数据块的时间。在满足上述条件的基础上,这个时间的选取可以由本领域技术人员根据实际需求进行设置。
[0056]步骤S2086:将步骤S2082中计算的剩余完成时间与步骤S2084中计算的在两个计算节点间传输一个数据块所需的时间进行比较,筛选出一系列可供预取的候选计算节点集合 candidateTTs。
[0057]其中,候选计算节点集合中各个计算节点当前正在执行的map任务的剩余完成时间,大于在计算节点间传输一个数据块的时间。并且,候选计算节点集合是实时更新的。
[0058]步骤S210:当Hadoop集群中不存在空闲计算节点时,主节点从候选计算节点集合中,选择最早释放忙碌计算槽的计算节点作为满足设定标准的计算节点。
[0059]步骤S212:主节点判断当前作业中是否存在执行失败的map任务。若存在执行失败的map任务,则执行步骤S214 ;若不存在执行失败的map任务,则执行步骤S216。
[0060]在Hadoop集群中尚无计算节点请求分配任务时,事先对当前作业未执行的map任务进行筛选。为了保证当前作业中执行失败的任务可以快速被重新调度,对于当前运行的作业,如果当前作业的执行失败任务集合即failedMaps集合不为空,即存在执行失败的map任务,则执行步骤S214 ;若当前作业中不存在执行失败的map任务,即当前作业的执行失败任务集合为空集合,则执行步骤S216。
[0061]步骤S214:当前作业中存在执行失败的map任务时,主节点选择一个执行失败次数最多的map任务作为待执行的map任务。
[0062]除直接选择一个执行失败次数最多的map任务作为待执行的map任务外,还存在一种优选的方法从执行失败任务集合中选择一个执行失败的任务,该方法为:将多个执行失败的map任务严格按其相对于步骤S206或步骤S210中选出的满足设定标准的计算节点的数据本地性进行筛选,如果存在满足设定标准的计算节点的node-local任务即节点本地任务,则选择该node-local任务作为待执行的map任务;反之,则选择该失败次数最多的任务作为待执行的map任务。
[0063]步骤S216:当前作业中不存在执行失败的map任务时,主节点则从当前作业中选择一个剩余的map任务作为待执行的map任务。
[0064]如果此时执行失败任务集合为空,则查询当前队列中正在运行的作业是否还有剩余map任务没有完成,如果是,则从当前作业中选择一个剩余的map任务作为待执行的map任务。具体步骤为:在剩余的多个map任务中严格按照本地性策略依次查找待执行的map任务。即从多个map任务中首选查找满足设定标准的计算节点的本地任务即node-local任务,若果存在node-local任务,则选择该map任务作为待执行的map任务;若不存在node-local任务,则选择机架本地任务即rack-local任务作为待执行的map任务;如果前面两种任务都不存在,则最终选择一个远程任务即off-switch任务作为待执行的map任务。[0065]步骤S218:主节点判断待执行的map任务是否为满足设定标准的计算节点的本地任务。若是本地任务,则直接执行步骤S222 ;若不是本地任务,则执行步骤S220。
[0066]当待执行的map任务是满足设定标准的计算节点的本地任务时,则直接执行步骤S222 ;当待执行的map任务不是满足设定标准的计算节点的本地任务时,则执行步骤S220。
[0067]步骤S220:当待执行的map任务不是满足设定标准的计算节点的本地任务时,主节点将待执行的map任务对应的数据块从源计算节点传输到满足设定标准的计算节点上进行存储。
[0068]其中,源计算节点为存储有数据块的副本且与满足设定标准的计算节点间的网络拓扑距离最小的计算节点。
[0069]将待执行的map任务对应的数据块从源计算节点传输到满足设定标准的计算节点上进行存储的具体步骤如下:
[0070]主节点中存储有各个未完成的map任务集合,并且这些map任务的输入数据都有相应的元数据信息存储在主节点上。元数据信息中记录了各个未完成的map任务所对应的数据块即输入数据(Input Split)的存储位置,因为每个map任务对应一定量的数据块副本,常规来说一般副本的个数为三个,当然也可以根据实际需求设定副本的个数;每个数据块副本都存储在不同的计算节点上,元数据信息中就记录了各个数据块副本的存储位置。
[0071]步骤S2202:主节点从待执行的map任务对应的未完成任务Task InProgress对象中读取相应元数据信息,获取该map任务的输入数据Input Split所在位置,以确定候选源计算节点集合。
[0072]步骤S2024:主节点获取当前Hadoop集群所配置的网络拓扑结构信息,选择与满足设定标准的计算节点拓扑距离最近的且存储有数据块副本的计算节点为源计算节点。
[0073]当主节点通过读取配置(conf)目录下的网络拓扑文件(topology, data),即可获取当前Hadoop集群所配置的网络拓扑结构信息,由此可以计算满足设定标准的计算节点与候选源计算节点集合中各个源计算节点间的距离,选取网络拓扑距离最近的计算节点。
[0074]步骤S2026:主节点将待执行的map任务的输入数据块通过网络从源计算节点传输到满足设定标准的计算节点并存储于本地磁盘中,并更新Hadoop集群中主节点中存储的相应的元数据信息文件。
[0075]步骤S222:当满足设定标准的计算节点请求分配map任务时,主节点将筛选出的待执行的map任务分配给满足设定标准的计算节点。
[0076]满足设定标准的计算节点在释放忙碌slot即计算槽之后发送心跳信息给JobTracker即主节点,请求分配新的map任务,此时主节点将预先获取过的待执行的map任务直接分配给该计算节点,map任务得以立即执行,避免了等待且换来更好的数据本地性。
[0077]通过本实施提供的作业调度方法,Hadoop集群在执行当前作业过程中,为各个计算节点分配任务时,一方面,优先为集群中的空闲计算节点分配map任务,并且当该map任务不是该空闲计算节点的本地任务时,直接将该map任务对应的数据块由数据块副本所在的源计算节点传输到该空闲计算节点上并进行存储,然后将该map任务分配给该空闲计算节点,避免了现有的作业调度方法中,当判断出待分配的map任务不是本地任务时需要等待本地计算节点出现的时间,同时,避免了空闲计算节点的资源浪费,提高了资源利用率,缩短了作业的平均完成时间。另一方面,当Hadoop集群中的各个计算节点均在执行任务时,在计算节点执行前一个map任务的过程中,选择最早释放忙碌计算槽的计算节点,并且为该计算节点预先获取下一个map任务所对应的数据块,保证了任务的本地性。这样当计算节点完成前一个map任务后,就可以直接执行下一个map任务,也同样提高了资源的利用率以及作业的完成效率。
[0078]实施例三
[0079]参照图3,示出了本发明实施例三的一种作业调度方法的步骤流程图。
[0080]本实施例中,在Hadoop集群中各个计算节点都在执行当前作业中的map任务的前提下,对本发明中的作业调度方法进行了详细说明。
[0081]在本实施例中假设有一个Hadoop集群C,该集群由N个TT (TaskTracker,计算节点)和一个JT (JobTracker,主节点)组成,该集群可以表示为C = {JT, TTi | i e [0,N)}。假设一个作业J,由m个map (映射)任务和r个reduce任务,而由于当前普遍认为reduce任务不存在数据本地性问题,因此,本实施例中不予考虑,则一个作业可以简化表示为J =(Mi I i e [O, m)} ο而对于一个作业的输入数据,Hadoop默认设置为一个map任务对应一个输入数据块,则作业的输入数据可以表示为I= (BiIie [0,m)}。那么当用户提交上述这样一个作业时,Hadoop集群对该作业的调度概括来讲主要执行三个步骤的操作:步骤S302:预选候选计算节点即预选满足设定标准的计算节点;步骤S304:预选待执行的map任务;以及步骤S306:为预选出的候选计算节点预先获取执行预选出的非本地map任务的数据资源即数据块。
[0082] 其中,步骤S302:预选候选计算节点的具体实施步骤如下:
[0083]步骤S3022:估算Hadoop集群中计算节点当前正在执行的map任务的剩余完成时间。
[0084]本实施例中,利用当前计算节点上正在执行的map任务的执行进度来估算任务剩余执行时间。
[0085]利用当前各个计算节点上正在执行的map任务的执行进度来估算任务剩余执行时间的具体步骤如下:
[0086]首先,通过任务已经读取的数据大小占其总输入数据大小的比重,计算一个map任务的执行进度记为progress:其中,
r ]readData
[0087]progress = -ο

totalDa ta
[0088]其中,readData为读取的数据大小;totalData为总输入数据大小!progress为map任务的执行进度。
[0089]其次,根据任务执行进度估算该计算节点上正在运行的map任务的剩余完成时间,下面在公式中将剩余完成时间记为estimatedLeftTime。
[0090]这里为了计算剩余完成时间引入了任务进度的增长率记为Ap:其中,
△Progressf
[0091]μ current Time — di SpaichTimet
[0092]在上述公式中,progresst为任务t的当前进度,currentTime为当前时间,dispatchTimet为任务t被调度的时间。
[0093]为了方便计算,假设任务t以恒定的进度增长率执行,则任务t的剩余完成时间可用如下公式进行计算
【权利要求】
1.一种作业调度方法,其特征在于,包括: 当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合;以及,按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务,其中,一个作业包括至少一个map任务; 从所述候选计算节点集合中选择一个满足设定标准的计算节点; 判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务; 当所述待执行的map任务不是所述满足设定标准的计算节点的本地任务时,将所述待执行的map任务对应的数据块从源计算节点传输到所述满足设定标准的计算节点上进行存储;其中,所述源计算节点为存储有所述数据块的副本且与所述满足设定标准的计算节点间的网络拓扑距离最小的计算节点; 当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点。
2.根据权利要求1所述的方法,其特征在于,所述根据第一设定规则筛选出候选计算节点集合步骤包括: 判断执行所述当前作业的Hadoop集群中是否存在空闲计算节点; 若存在,则将所有空闲计算节点作为所述候选计算节点集合; 若不存在,则根据第一设定规则筛选所述Hadoop集群中正在执行所述当前作业中的map任务的计算节点,组成所述候选计算节点集合;其中,所述候选计算节点集合中各个计算节点当前正在执行的map任务 的剩余完成时间,大于在计算节点间传输一个数据块的时间。
3.根据权利要求1所述的方法,其特征在于,所述按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务步骤包括: 判断所述当前作业中是否存在执行失败的map任务; 若存在,则选择一个执行失败次数最多的map任务作为待执行的map任务; 若不存在,则从所述当前作业中选择一个剩余的map任务作为待执行的map任务。
4.根据权利要求2所述的方法,其特征在于,所述从所述候选计算节点集合中选择一个满足设定标准的计算节点的步骤包括: 当所述Hadoop集群中不存在空闲计算节点时,从所述候选节点集合中,选择最早释放忙碌计算槽的计算节点作为所述满足设定标准的计算节点。
5.根据权利要求1所述的方法,其特征在于,在所述判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务步骤之后,还包括: 当所述待执行的map任务是所述满足设定标准的计算节点的本地任务时,直接执行当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点的步骤。
6.一种作业调度装置,其特征在于,包括: 第一筛选模块,用于在当前作业执行过程中,根据第一设定规则筛选出候选计算节点集合; 第二筛选模块,按照第二设定规则筛选出所述当前作业中一个未执行的map任务作为待执行的map任务,其中,一个作业包括至少一个map任务;选择模块,用于从所述候选计算节点集合中选择一个满足设定标准的计算节点; 判断模块,用于判断所述待执行的map任务是否为所述满足设定标准的计算节点的本地任务; 传输模块,用于当所述待执行的map任务不是所述满足设定标准的计算节点的本地任务时,将所述待执行的map任务对应的数据块从源计算节点传输到所述满足设定标准的计算节点上进行存储;其中,所述源计算节点为存储有所述数据块的副本且与所述满足设定标准的计算节点间的网络拓扑距离最小的计算节点; 分配模块,用于当所述满足设定标准的计算节点请求分配map任务时,将筛选出的所述待执行的map任务分配给所述满足设定标准的计算节点。
7.根据权利要求6所述的装置,其特征在于,所述第一筛选模块包括: 第一判断子模块,用于在当前作业执行过程中判断执行所述当前作业的Hadoop集群中是否存在空闲计算节点; 执行子模块,用于在所述判断子模块的判断结果为存在时,将所有空闲计算节点作为所述候选计 算节点集合;在所述判断子模块的判断结果为不存在时,根据第一设定规则筛选所述Hadoop集群中正在执行所述当前作业中的map任务的计算节点,组成所述候选计算节点集合;其中,所述候选计算节点集合中各个计算节点当前正在执行的map任务的剩余完成时间,大于在计算节点间传输一个数据块的时间。
8.根据权利要求6所述的装置,其特征在于,所述第二筛选模块包括: 第二判断子模块,用于判断所述当前作业中是否存在执行失败的map任务; 选择子模块,用于在所述第二判断子模块的判断结果为存在时,选择一个执行失败次数最多的map任务作为待执行的map任务;在所述第二判断子模块的判断结果为不存在时,从所述当前作业中选择一个剩余的map任务作为待执行的map任务。
9.根据权利要求7所述的装置,其特征在于,所述选择模块从所述候选计算节点集合中选择一个满足设定标准的计算节点时: 当所述Hadoop集群中不存在空闲计算节点时,从所述候选节点集合中,选择最早释放忙碌计算槽的计算节点作为所述满足设定标准的计算节点。
10.根据权利要求6所述的装置,其特征在于,所述作业调度装置还包括: 调用模块,用于在所述判断模块的判断结果为所述待执行的map任务是所述满足设定标准的计算节点的本地任务时,直接调用所述分配模块。
【文档编号】G06F9/48GK103530182SQ201310497575
【公开日】2014年1月22日 申请日期:2013年10月22日 优先权日:2013年10月22日
【发明者】黄梦醒, 万兵, 段茜, 冯文龙 申请人:海南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1