一种任务调度方法及装置的制造方法_2

文档序号:9929435阅读:来源:国知局
标任务队列进行处理,从而优先处理急需被处理的任务队列中的未运行 任务,不仅更好的保证了任务调度的公平性,且大大提高了任务执行效率,减少了任务执行 的总时间。
【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。
[0041 ]图1为本发明实施例提供的一种任务调度方法的流程图;
[0042] 图2为本发明实施例提供的一种任务调度方法中利用所述空闲工作槽对所述目标 任务队列中的未运行任务进行处理的流程图;
[0043] 图3为本发明实施例提供的一种任务调度装置的结构示意图。
【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0045] 请参阅图1,其示出了本发明实施例提供的一种任务调度方法的流程图,可以包括 以下步骤:
[0046] S1:获取工作节点的请求信息,请求信息为工作节点存在空闲工作槽时发送的请 求任务的彳目息。
[0047]本发明实施例提供的一种任务调度方法及装置具体可以应用于Hadoop集群,即, 应用于包含有多个工作节点的Hadoop中,而集群中的每个工作节点均具有对应数量的工作 槽,集群中每个工作节点的工作槽的数量可以相同,也可以不同,均可以根据实际需要进行 确定;工作节点利用其具有的工作槽对任务进行处理,空闲工作槽即当前时刻未对任何任 务进行处理的工作槽。
[0048] 其中,需要说明的是,本发明实施例提供的一种任务调度方法的步骤的主语可以 为Hadoop集群中的调度节点(JobTracker),而下文中提供的一种任务调度装置具体可以是 设置在调度节点内的装置,调度节点可以通过心跳连接(Heartbeat)对集群中包含的全部 工作节点(TaskTracker)进行监听,当监听到任一工作节点包含请求信息时,即为获取到该 工作节点的请求信息。
[0049] S2:计算每个任务队列的资源消耗特征及剩余任务比例,其中,任一任务队列的资 源消耗特征为依据该任务队列中正在运行的任务的CPU占用率、内存占用率及带宽占用率 进行计算得到的,任一任务队列的剩余任务比例为该任务队列中未运行任务与全部任务的 比值。
[0050] 其中,CPU占用率实则为运行的任务占用的CPU资源与全部CPU资源的比值,同理, 内存占用率表示运行的任务占用的内存资源与全部内存资源的比值,带宽占用率表示运行 的任务占用的带宽资源与全部带宽资源的比值,通过CHJ占用率、内存占用率及带宽占用率 计算得到的资源消耗特征能够表征对应任务队列消耗资源的情况。
[0051] S3:选取任务队列中其资源消耗特征及剩余任务比例的乘积不小于其他任务队列 的任务队列为目标任务队列,并利用空闲工作槽对目标任务队列中的未运行任务进行处 理。
[0052]其中,未运行任务即为等待处理的任务,需要说明的是,本申请中,对任一任务进 行处理即为运行该任务。
[0053]需要说明的是,如果仅仅凭借任一任务队列中正在运行的任务的资源消耗,即资 源消耗特征来判断该任务队列是否处于资源紧张状态是不完备的,因此,本申请中还考虑 到任务队列中未运行任务的情况,即剩余任务比例,由此,综合考虑任一任务队列中正在运 行的任务的资源消耗及该任务队列中未运行任务的情况确定该任务队列是否处于资源紧 张状态,资源消耗特征与剩余任务比例的乘积越大,表明对应任务队列的资源紧张状态越 严重,越需要及时对对应任务队列进行处理,因此,本申请通过上述步骤,选取任务队列中 资源紧张状态最严重的目标任务队列进行处理,从而优先处理急需被处理的任务队列中的 未运行任务,不仅更好的保证了任务调度的公平性,且大大提高了任务执行效率,减少了任 务执行的总时间。
[0054]本发明实施例提供的一种任务调度方法中,如图2所示,利用空闲工作槽对目标任 务队列中的未运行任务进行处理,可以包括:
[0055] S31:计算工作节点的能力特征,其中,能力特征为依据工作节点的CPU、内存、硬盘 及带宽对应的属性值进行计算得到的。
[0056] 其中,CPU、内存、硬盘及带宽对应的属性值可以为CPU主频、内存大小、硬盘大小及 带宽大小,通过利用上述属性值进行计算得到的能力特征,能够表征工作节点对任务进行 处理的能力。
[0057] S32:计算目标任务队列中包含的未运行任务的资源占用特征,其中,目标任务队 列中任一未运行任务的资源占用特征为该未运行任务占用的工作槽数量与目标任务队列 中全部任务占用的工作槽数量的平均值的比值。
[0058]上述资源占用特征能够表征任务队列中未运行任务的资源占用情况,或者说,未 运行任务需要占用的资源的情况。
[0059] S33:选取目标任务队列中其资源占用特征与工作节点的能力特征相匹配的未运 行任务为目标任务,并利用空闲工作槽对目标任务进行处理。
[0060] 通过本申请公开的上述步骤,选取目标任务队列中与工作节点的能力相匹配的未 运行任务,从而能够使得工作节点顺利实现对于目标任务的处理,有效避免了 "弱节点执行 大任务",即能力较弱的节点执行需要资源较大的任务的情况发生,进而有效提高了任务执 行效率。
[0061] 具体来说,选取目标任务队列中其资源占用特征与工作节点的能力特征相匹配的 未运行任务为目标任务,可以包括:
[0062]将工作节点的能力特征与节点能力阈值进行比对,如果工作节点的能力特征大于 节点能力阈值,则判断目标队列中是否存在其资源占用特征大于资源占用阈值的未运行任 务,如果目标队列中存在其资源占用特征大于资源占用阈值的未运行任务,则由其资源占 用特征大于资源占用阈值的未运行任务中选取一个未运行任务作为目标任务,如果目标队 列中不存在其资源占用特征大于资源占用阈值的未运行任务,则判断目标队列中是否存在 其资源占用特征等于资源占用阈值的未运行任务,如果目标队列中存在其资源占用特征等 于资源占用阈值的未运行任务,则由其资源占用特征等于资源占用阈值的未运行任务中选 取一个未运行任务作为目标任务,如果目标队列中不存在其资源占用特征等于资源占用阈 值的未运行任务,则判断目标队列中是否存在其资源占用特征小于资源占用阈值的未运行 任务,如果目标队列中存在其资源占用特征小于资源占用阈值的未运行任务,则由其资源 占用特征小于资源占用阈值的未运行任务中选取一个未运行任务作为目标任务;
[0063]如果工作节点的能力特征等于节点能力阈值,则判断目标队列中是否存在其资源 占用特征等于资源占用阈值的未运行任务,如果目标队列中存在其资源占用特征等于资源 占用阈值的未运行任务,则由其资源占用特征等于资源占用阈值的未运行任务中选取一个 未运行任务作为目标任务,如果目标队列中不存在其资源占用特征等于资源占用阈值的未 运行任务,则判断目标队列中是否存在其资源占用特征小于资源占用阈值的未运行任务, 如果目标队列中存在其资源占用特征小于资源占用阈值的未运行任务,则由其资源占用特 征小于资源占用阈值的未运行任务中选取一个未运行任务作为目标任务;
[0064]如果工作节点的能力特征小于节点能力阈值,则判断目标队列中是否存在其资源 占用特征小于资源占用阈值的未运行任务,如果目标队列中存在其资源占用特征小于资源 占用阈值的未运行任务,则由其资源占用特征小于资源占用阈值的未运行任务中选取一个 未运行任务作为目标任务。
[0065] 其中,节点能力阈值及资源占用阈值可以根据实际需要进行确定,通过均可以选 为1,具体来说,如果工作节点的能力特征大于节点能力阈值,则工作节点为强节点,如果工 作节点的能力特征等于节点能力阈值,则工作节点为普通节点,如果工作节点的能力特征 小于节点能力阈值,则工作节点为弱节点,同理,如果未运行任务的资源占用特征大于资源 占用阈值,则该任务为大任务,如果未运行任务的资源占用特征等于资源占用阈值,则该任 务为普通任务,如果未运行任务的资源占用特征小于资源占用阈值,则该任务为小任务,从 而,通过对目标任务队列中的未运行任务进行分级及对工作节点的能力进行分级,按照能 力匹配原则得到与工作节点的能力相匹配的未运行任务,从而大大提高了任务执行效率。
[0066] 其中,由符合任一条件的未运行任务中选取一个未运行任务作为目标任务时,如 由其资源占用特征大于资源占用阈值的未运行任务中选取一个未运行任务作为目标任务 等,可以根据实际需要确定选取原则,如由符合该条件的未运行任务中按照FIFO原则进行 选取,或者随机选取等,均在本发明的保护范围之内。
[0067] 另外,剩余作业比例可以按照下列公式进行计算:
[0069] 其中,心为未运行任务i占用的作业槽的
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1