CN105868008B - 基于关键资源和数据预处理的资源调度方法及识别系统 - Google Patents
基于关键资源和数据预处理的资源调度方法及识别系统 Download PDFInfo
- Publication number
- CN105868008B CN105868008B CN201610169538.4A CN201610169538A CN105868008B CN 105868008 B CN105868008 B CN 105868008B CN 201610169538 A CN201610169538 A CN 201610169538A CN 105868008 B CN105868008 B CN 105868008B
- Authority
- CN
- China
- Prior art keywords
- node
- task
- queue
- resource
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
- G06F9/4875—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with migration policy, e.g. auction, contract negotiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了一种基于关键资源和数据预处理的资源调度方法,包括:在集群执行作业过程中生成节点队列;根据所述生成节点队列选取目标节点以及预备作业任务;通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。本发明还提供了一种基于关键资源和数据预处理的资源调度系统。本发明能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种基于关键资源和数据预处理的资源调度方法及识别系统。
背景技术
作业调度算法负责集群内部的资源分配和数据本地化的相关操作。作业调度算法实现了对系统资源的高效分配,减轻集群负载压力,对集群有着非常大的影响,自业界最早提出在Hadoop集群中使用先来先出调度算法以来,学者们纷纷提出了各种各样Hadoop集群的作业调度算法,其中最主要的是如下几个:
(1)公平调度算法:公平调度算法适用于多个用户同时使用集群,确保作业都可以相对公平的为作业分配其所需的资源。确保作业在运行的过程,分配到最小的运行资源以此来支持其运行。在资源使用效率和作业吞吐率方面,公平算法有很大程度的提高。
(2)自适应调度算法:2014年Amr M.Elkholy和Elsayed A.H Sallam提出了一种自适应调度算法。自适应调度算法将用户期待的运行时间作为目标,对资源的异构性和对不同节点所拥有的不同计算能力进行动态的调整和适应。自适应调度算法会通过计算节点所控制的不同数量的Map或Reduce插槽来动态的扩展或缩小TaskTracker所拥有的计算能力。通过对节点所占用插槽的数量的控制,来对剩余资源和未执行作业进行动态分配资源,从而保证在规定的时间内完成作业。
(3)MaxCover-BalAssign算法:Hadoop的作业的分配问题是一个NP问题,算法利用快速迭代,产生一系列不同的分配方案,在迭代出的多种资源分配策略中选取相对最优的方案,这个最优方案并不是最优解,只能与最优解无限接近,并且选出的分配策略保证数据的本地化性良好。
但是上述这些现有的算法不够理想,都有一定的局限性,即用户所提交的作业在等待分配系统资源时等待时间过长,而且在多作业情况下会导致资源分配不均衡,这两方面的缺点会导致集群中作业失败率提高,节点执行效率低和资源使用率低的问题。
因此,亟需设计一种资源调度方法和系统,以提高节点的执行效率,提高资源的使用率。
发明内容
有鉴于此,本发明实施例的目的在于提供一种基于关键资源和数据预处理的资源调度方法及识别系统,旨在解决现有技术中集群作业失败率较高,且节点执行效率低和资源使用率低的问题。
本发明实施例是这样实现的,一种基于关键资源和数据预处理的资源调度方法,包括:
在集群执行作业过程中生成节点队列;
根据所述生成节点队列选取目标节点以及预备作业任务;
通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
优选的,所述在集群执行作业过程中生成节点队列的步骤具体包括:
在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
优选的,所述根据所述生成节点队列选取目标节点以及预备作业任务的步骤具体包括:
读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
优选的,所述通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行的步骤具体包括:
通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
通过分布式文件系统来管理传输到所述目标节点的数据文件;
当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
另一方面,本发明还提供一种基于关键资源和数据预处理的资源调度系统,包括:
生成模块,用于在集群执行作业过程中生成节点队列;
选取模块,用于根据所述生成节点队列选取目标节点以及预备作业任务;
调度模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
优选的,所述生成模块具体包括:
第一排列子模块,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
计算子模块,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
第二排列子模块,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
优选的,所述选取模块具体包括:
第一选择子模块,用于读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
第二选择子模块,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
判断子模块,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
优选的,所述调度模块具体包括:
第一标记子模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
第二标记子模块,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
第一传输子模块,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
第二传输子模块,用于通过分布式文件系统来管理传输到所述目标节点的数据文件;
分配子模块,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
在本发明实施例中,本发明提供的技术方案在作业还未进行调度之前,对集群中的所有计算节点进行排序,对计算节点释放资源所需时间进行排队,每次选择最先释放资源的节点,接着对集群中的失败作业或已提交但未执行本地化的作业进行选择,最后对选择的作业的三个数据副本进行选择,得到距离计算节点最近的数据文件进行数据传输。本发明提供的技术方案能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
附图说明
图1为本发明一实施方式中基于关键资源和数据预处理的资源调度方法流程图;
图2为本发明一实施方式中图1所示步骤S11的子步骤流程图;
图3为本发明一实施方式中图1所示步骤S12的子步骤流程图;
图4为本发明一实施方式中图1所示步骤S13的子步骤流程图;
图5为本发明一实施方式中基于关键资源和数据预处理的资源调度系统结构示意图;
图6为本发明一实施方式中图5所示生成模块11的内部结构示意图;
图7为本发明一实施方式中图5所示选取模块12的内部结构示意图;
图8为本发明一实施方式中图5所示调度模块13的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明具体实施方式提供了一种基于关键资源和数据预处理的资源调度方法,主要包括如下步骤:
S11、在集群执行作业过程中生成节点队列;
S12、根据所述生成节点队列选取目标节点以及预备作业任务;
S13、通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
本发明所提供的一种基于关键资源和数据预处理的资源调度方法,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
以下将对本发明所提供的一种基于数据预处理的资源调度方法进行详细说明。
请参阅图1,为本发明一实施方式中基于关键资源和数据预处理的资源调度方法流程图。
在步骤S11中,在集群执行作业过程中生成节点队列。
在本实施方式中,步骤S11具体包括S111、S112、S113这三个子步骤,如图2所示。
请参阅图2,为本发明一实施方式中图1所示步骤S11的子步骤流程图。
在步骤S111中,在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列。
在本实施方式中,集群包括从节点与主节点,在集群的每一个心跳周期中,从节点向主节点发送心跳信息来确定节点是否有空闲资源,报告有空闲的资源时,此时该拥有空闲资源的节点会被加入到所述节点队列中并按照顺序排列。
在步骤S112中,在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间。
在本实施方式中,当集群中的主节点对从节点进行轮询时,没有出现拥有空闲资源的节点时,则要依据节点释放资源的速度进行判断。在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间,即通过作业的已使用时间和已完成百分率来计算作业完成所需的剩余时间,作业的执行效率指的是已进行资源分配的作业在单位时间内所完成的进度,其中,作业的执行效率可表示为:Rate=Progress/(currentTime-startTime),其中,currentTime表示当前时间,startTime表示开始时间,当前节点的作业完成所需的剩余时间通过以下公式计算得到:leftTime=1-progress/Rate,其中,leftTime表示剩余时间。
在本实施方式中,集群内部网络是采用局域网高速互联,因此局域网内部的理论传输速度是可以通过网络设备自身的参数获悉,也就是说可以通过网络中的传输速率来计算一个作业所需的数据块在所述当前节点中传输的传输时间,每个数据块在集群中的大小是固定的,即blockSize为64MB,当局域网带宽在100M时,集群的数据传送效率约为每秒10兆,一个作业所需的数据块在所述当前节点中传输的传输时间可以表示为:tranTime=blockSize/transRate,其中,transRate表示数据传送效率,transTime表示传输时间。
在步骤S113中,如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
请继续参阅图1,在步骤S12中,根据所述生成节点队列选取目标节点以及预备作业任务。
在本实施方式中,步骤S12具体包括S121、S122、S123这三个子步骤,如图3所示。
请参阅图3,为本发明一实施方式中图1所示步骤S12的子步骤流程图。
在步骤S121中,读取最新更新的所述节点队列(NodeQueue)中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点。
在本实施方式中,目标节点是作业任务额外完成时间最小且拥有足够的时间完成任务数据本地化。
在步骤S122中,轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务。
在本实施方式中,运行失败的作业在集群内拥有较高的优先级,作业失败后可以快速的被重新分配资源,从而提高作业的执行进度,集群会维护一个失败作业(failedTask)的队列,即失败队列,集群会为失败任务赋予最高的优先级,若失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与目标节点(AimNode)进行数据本地性判断,如果是本地节点任务则算法结束,如果尚未完成本地化操作则将选取的任务标记为预备作业任务(ReadyTask)。
在步骤S123中,如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
在本实施方式中,如果预备作业(ReadyTask)为空,则表示当前集群没有失败任务存在,于是在已提交但未分配资源的提交作业队列(SubmitQueue)中选择作业,如果存在符合条件的作业,就将此任务与之前所选出的目标节点(AimNode)的数据进行本地性判断,如果未执行任务中存在本地化任务,则算法结束,反之,则将未执行任务标记为预备作业(ReadyTask)。
请继续参阅图1,在步骤S13中,通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
在本实施方式中,步骤S13具体包括S131~S135这三个子步骤,如图4所示。
请参阅图4,为本发明一实施方式中图1所示步骤S13的子步骤流程图。
在步骤S131中,通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合。
在本实施方式中,通过调度算法找到的目标节点和预备作业任务,通过作业对应的TaskInProgress来获取作业所需资源的相关的元数据信息,通过获取相关数据块所在的目标位置信息集来确定需要进行数据传输的节点,在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合,记为SourceNodes。
在步骤S132中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
在本实施方式中,通过读取配置信息,得到网络环境配置情况,判断与目标节点AimNode最近的预备作业的数据文件所在的位置,Hadoop中节点与数据文件存在以下的四种可能:位于同一个节点,即数据已经完成了本地化操作;位于同一个机架,不同节点;位于同一个中心的其他机架上;位于不同的数据中心。这四种情况,数据进行传输的成本是不同的,所以要依据数据不同的存储位置,确定对其中哪一个数据块进行网络传输操作。数据文件位置不同,所造成的传输成本不同,因此依据传输成本大小,来为其确定不同的权值。在本实施方式中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
在步骤S133中,将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点。
在本实施方式中,通过在步骤S132的计算,从目标位置信息集中选择一个距离目标节点最近节点,记为源节点(SourceNode),将目标任务所需的输入数据通过网络传输到目标节点上。
在步骤S134中,通过分布式文件系统来管理传输到所述目标节点的数据文件。
在本实施方式中,更新JobTracker的文件信息,通过分布式文件系统(HadoopDistributed File System,HDFS)来管理通过传输到达目标节点的数据文件。
在步骤S135中,当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
在本实施方式中,当目标节点上的作业执行结束后,会在心跳周期内,使用指令通知主节点为目标节点分配新的作业,此时,将ReadyTask中的作业调度到指定位置,此作业所需文件完成传输,保存在了本地,此时此任务相当于已经完成了数据本地化操作,无需等待,可以直接运行。
本发明所提供的一种基于关键资源和数据预处理的资源调度方法,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
本发明具体实施方式还提供一种基于关键资源和数据预处理的资源调度系统10,主要包括:
生成模块11,用于在集群执行作业过程中生成节点队列;
选取模块12,用于根据所述生成节点队列选取目标节点以及预备作业任务;
调度模块13,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
本发明所提供的一种基于关键资源和数据预处理的资源调度系统10,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
请参阅图5,所示为本发明一实施方式中基于关键资源和数据预处理的资源调度系统10的结构示意图。在本实施方式中,基于关键资源和数据预处理的资源调度系统10包括生成模块11、选取模块12以及调度模块13。
生成模块11,用于在集群执行作业过程中生成节点队列。
在本实施方式中,生成模块11具体包括第一排列子模块111、计算子模块112、第二排列子模块113这三个子模块,如图6所示。
请参阅图6,为本发明一实施方式中图5所示生成模块11的内部结构示意图。
第一排列子模块111,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列。
在本实施方式中,集群包括从节点与主节点,在集群的每一个心跳周期中,从节点向主节点发送心跳信息来确定节点是否有空闲资源,报告有空闲的资源时,此时该拥有空闲资源的节点会被加入到所述节点队列中并按照顺序排列。
计算子模块112,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间。
在本实施方式中,当集群中的主节点对从节点进行轮询时,没有出现拥有空闲资源的节点时,则要依据节点释放资源的速度进行判断。在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间,即通过作业的已使用时间和已完成百分率来计算作业完成所需的剩余时间,作业的执行效率指的是已进行资源分配的作业在单位时间内所完成的进度,其中,作业的执行效率可表示为:Rate=Progress/(currentTime-startTime),其中,currentTime表示当前时间,startTime表示开始时间,当前节点的作业完成所需的剩余时间通过以下公式计算得到:leftTime=1-progress/Rate,其中,leftTime表示剩余时间。
在本实施方式中,集群内部网络是采用局域网高速互联,因此局域网内部的理论传输速度是可以通过网络设备自身的参数获悉,也就是说可以通过网络中的传输速率来计算一个作业所需的数据块在所述当前节点中传输的传输时间,每个数据块在集群中的大小是固定的,即blockSize为64MB,当局域网带宽在100M时,集群的数据传送效率约为每秒10兆,一个作业所需的数据块在所述当前节点中传输的传输时间可以表示为:tranTime=blockSize/transRate,其中,transRate表示数据传送效率,transTime表示传输时间。
第二排列子模块113,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
请继续参阅图5,选取模块12,用于根据所述生成节点队列选取目标节点以及预备作业任务。
在本实施方式中,选取模块12具体包括第一选择子模块121、第二选择子模块122、判断子模块123这三个子模块,如图7所示。
请参阅图7,为本发明一实施方式中图5所示选取模块12的内部结构示意图。
第一选择子模块121,用于读取最新更新的所述节点队列(NodeQueue)中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点。
在本实施方式中,目标节点是作业任务额外完成时间最小且拥有足够的时间完成任务数据本地化。
第二选择子模块122,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务。
在本实施方式中,运行失败的作业在集群内拥有较高的优先级,作业失败后可以快速的被重新分配资源,从而提高作业的执行进度,集群会维护一个失败作业(failedTask)的队列,即失败队列,集群会为失败任务赋予最高的优先级,若失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与目标节点(AimNode)进行数据本地性判断,如果是本地节点任务则算法结束,如果尚未完成本地化操作则将选取的任务标记为预备作业任务(ReadyTask)。
判断子模块123,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
在本实施方式中,如果预备作业(ReadyTask)为空,则表示当前集群没有失败任务存在,于是在已提交但未分配资源的提交作业队列(SubmitQueue)中选择作业,如果存在符合条件的作业,就将此任务与之前所选出的目标节点(AimNode)的数据进行本地性判断,如果未执行任务中存在本地化任务,则算法结束,反之,则将未执行任务标记为预备作业(ReadyTask)。
请继续参阅图5,调度模块13,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
在本实施方式中,调度模块13具体包括第一标记子模块131、第二标记子模块132、第一传输子模块133、第二传输子模块134、分配子模块135这五个子模块,如图8所示。
请参阅图8,为本发明一实施方式中图5所示调度模块13的内部结构示意图。
第一标记子模块131,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合。
在本实施方式中,通过调度算法找到的目标节点和预备作业任务,通过作业对应的TaskInProgress来获取作业所需资源的相关的元数据信息,通过获取相关数据块所在的目标位置信息集来确定需要进行数据传输的节点,在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合,记为SourceNodes。
第二标记子模块132,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
在本实施方式中,通过读取配置信息,得到网络环境配置情况,判断与目标节点AimNode最近的预备作业的数据文件所在的位置,Hadoop中节点与数据文件存在以下的四种可能:位于同一个节点,即数据已经完成了本地化操作;位于同一个机架,不同节点;位于同一个中心的其他机架上;位于不同的数据中心。这四种情况,数据进行传输的成本是不同的,所以要依据数据不同的存储位置,确定对其中哪一个数据块进行网络传输操作。数据文件位置不同,所造成的传输成本不同,因此依据传输成本大小,来为其确定不同的权值。在本实施方式中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
第一传输子模块133,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点。
在本实施方式中,通过在第二标记子模块132的计算,从目标位置信息集中选择一个距离目标节点最近节点,记为源节点(SourceNode),将目标任务所需的输入数据通过网络传输到目标节点上。
第二传输子模块134,用于通过分布式文件系统来管理传输到所述目标节点的数据文件。
在本实施方式中,更新JobTracker的文件信息,通过分布式文件系统(HadoopDistributed File System,HDFS)来管理通过传输到达目标节点的数据文件。
分配子模块135,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
在本实施方式中,当目标节点上的作业执行结束后,会在心跳周期内,使用指令通知主节点为目标节点分配新的作业,此时,将ReadyTask中的作业调度到指定位置,此作业所需文件完成传输,保存在了本地,此时此任务相当于已经完成了数据本地化操作,无需等待,可以直接运行。
本发明所提供的一种基于关键资源和数据预处理的资源调度系统10,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于关键资源和数据预处理的资源调度方法,其特征在于,所述基于关键资源和数据预处理的资源调度方法包括:
在集群执行作业过程中生成节点队列;
根据所述生成节点队列选取目标节点以及预备作业任务;
通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行;
其中,所述在集群执行作业过程中生成节点队列的步骤具体包括:
在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
2.如权利要求1所述的基于关键资源和数据预处理的资源调度方法,其特征在于,所述根据所述生成节点队列选取目标节点以及预备作业任务的步骤具体包括:
读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
3.如权利要求2所述的基于关键资源和数据预处理的资源调度方法,其特征在于,所述通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行的步骤具体包括:
通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
通过分布式文件系统来管理传输到所述目标节点的数据文件;
当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
4.一种基于关键资源和数据预处理的资源调度系统,其特征在于,所述基于关键资源和数据预处理的资源调度系统包括:
生成模块,用于在集群执行作业过程中生成节点队列;
选取模块,用于根据所述生成节点队列选取目标节点以及预备作业任务;
调度模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行;
其中,所述生成模块具体包括:
第一排列子模块,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
计算子模块,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
第二排列子模块,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
5.如权利要求4所述的基于关键资源和数据预处理的资源调度系统,其特征在于,所述选取模块具体包括:
第一选择子模块,用于读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
第二选择子模块,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
判断子模块,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
6.如权利要求5所述的基于关键资源和数据预处理的资源调度系统,其特征在于,所述调度模块具体包括:
第一标记子模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
第二标记子模块,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
第一传输子模块,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
第二传输子模块,用于通过分布式文件系统来管理传输到所述目标节点的数据文件;
分配子模块,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169538.4A CN105868008B (zh) | 2016-03-23 | 2016-03-23 | 基于关键资源和数据预处理的资源调度方法及识别系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610169538.4A CN105868008B (zh) | 2016-03-23 | 2016-03-23 | 基于关键资源和数据预处理的资源调度方法及识别系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105868008A CN105868008A (zh) | 2016-08-17 |
CN105868008B true CN105868008B (zh) | 2019-05-28 |
Family
ID=56624894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610169538.4A Active CN105868008B (zh) | 2016-03-23 | 2016-03-23 | 基于关键资源和数据预处理的资源调度方法及识别系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105868008B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509256B (zh) * | 2017-02-28 | 2021-01-15 | 华为技术有限公司 | 调度运行设备的方法、设备和运行设备 |
CN109871265A (zh) * | 2017-12-05 | 2019-06-11 | 航天信息股份有限公司 | Reduce任务的调度方法及装置 |
CN109995824B (zh) * | 2017-12-29 | 2022-10-04 | 阿里巴巴集团控股有限公司 | 一种对等网络中的任务调度方法及装置 |
CN108509280B (zh) * | 2018-04-23 | 2022-05-31 | 南京大学 | 一种基于推送模型的分布式计算集群本地性调度方法 |
CN110532085B (zh) * | 2018-05-23 | 2022-11-04 | 阿里巴巴集团控股有限公司 | 一种调度方法和调度服务器 |
CN109922127A (zh) * | 2019-01-08 | 2019-06-21 | 博拉网络股份有限公司 | 一种云计算服务方法、装置和存储介质 |
CN113037800B (zh) * | 2019-12-09 | 2024-03-05 | 华为云计算技术有限公司 | 作业调度方法以及作业调度装置 |
CN111143063B (zh) * | 2019-12-24 | 2023-08-18 | 青岛海尔科技有限公司 | 任务的资源预约方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073546A (zh) * | 2010-12-13 | 2011-05-25 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
CN102255926A (zh) * | 2010-05-17 | 2011-11-23 | 中国移动通信集团公司 | MapReduce系统中的任务分配方法、系统及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9094872B2 (en) * | 2012-01-24 | 2015-07-28 | International Business Machines Corporation | Enhanced resource management for a network system |
US10275004B2 (en) * | 2014-06-04 | 2019-04-30 | Intel Corporation | Data center management |
-
2016
- 2016-03-23 CN CN201610169538.4A patent/CN105868008B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255926A (zh) * | 2010-05-17 | 2011-11-23 | 中国移动通信集团公司 | MapReduce系统中的任务分配方法、系统及装置 |
CN102073546A (zh) * | 2010-12-13 | 2011-05-25 | 北京航空航天大学 | 一种云计算环境中分布式计算模式下的任务动态调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105868008A (zh) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105868008B (zh) | 基于关键资源和数据预处理的资源调度方法及识别系统 | |
Madni et al. | Resource scheduling for infrastructure as a service (IaaS) in cloud computing: Challenges and opportunities | |
CN101719931B (zh) | 一种基于多智能主体的层次式云端计算模型构建方法 | |
Lin et al. | Scheduling scientific workflows elastically for cloud computing | |
CN105656973B (zh) | 一种分布式节点组内任务调度方法及系统 | |
Zheng et al. | An approach for cloud resource scheduling based on Parallel Genetic Algorithm | |
CN102780759B (zh) | 基于调度目标空间的云计算资源调度方法 | |
Guo et al. | Improving mapreduce performance in heterogeneous network environments and resource utilization | |
CN110737529A (zh) | 一种面向短时多变大数据作业集群调度自适应性配置方法 | |
Amalarethinam et al. | An Overview of the scheduling policies and algorithms in Grid Computing | |
Mishra et al. | A state-of-art on cloud load balancing algorithms | |
CN114138486A (zh) | 面向云边异构环境的容器化微服务编排方法、系统及介质 | |
US8464268B2 (en) | Dynamic scheduling of jobs/batches using earliest completion time algorithm in cellular manufacturing with batch-splitting of jobs above certain size | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
Gkoutioudi et al. | Multi-criteria job scheduling in grid using an accelerated genetic algorithm | |
CN107864211B (zh) | 集群资源调度方法及系统 | |
CN109582448A (zh) | 一种面向关键度和时效性的边缘计算任务调度方法 | |
Zhang et al. | A multi-agent learning approach to online distributed resource allocation | |
CN106201701A (zh) | 一种带任务重复的工作流调度算法 | |
CN108491255A (zh) | 自助式MapReduce数据优化分配方法及系统 | |
CN108427602A (zh) | 一种分布式计算任务的协同调度方法及装置 | |
Sharma et al. | PLB: a resilient and adaptive task scheduling scheme based on multi-queues for cloud environment | |
Stavrinides et al. | Orchestrating bag-of-tasks applications with dynamically spawned tasks in a distributed environment | |
Kostenko | Combinatorial optimization algorithms combining greedy strategies with a limited search procedure | |
Li et al. | On scheduling of high-throughput scientific workflows under budget constraints in multi-cloud environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221103 Address after: No. 728, Yangming Road, Haicang Xinyang Industrial Zone, Xiamen, Fujian, 361028 Patentee after: Xiamen science and technology Ltd. Address before: 518000 No. 3688 Nanhai Road, Shenzhen, Guangdong, Nanshan District Patentee before: SHENZHEN University |
|
TR01 | Transfer of patent right |