基于关键资源和数据预处理的资源调度方法及识别系统的制作方法

文档序号:10511996阅读:268来源:国知局
基于关键资源和数据预处理的资源调度方法及识别系统的制作方法
【专利摘要】本发明提供了一种基于关键资源和数据预处理的资源调度方法,包括:在集群执行作业过程中生成节点队列;根据所述生成节点队列选取目标节点以及预备作业任务;通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。本发明还提供了一种基于关键资源和数据预处理的资源调度系统。本发明能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
【专利说明】
基于关键资源和数据预处理的资源调度方法及识别系统
技术领域
[0001]本发明涉及计算机领域,尤其涉及一种基于关键资源和数据预处理的资源调度方法及识别系统。
【背景技术】
[0002]作业调度算法负责集群内部的资源分配和数据本地化的相关操作。作业调度算法实现了对系统资源的高效分配,减轻集群负载压力,对集群有着非常大的影响,自业界最早提出在Hadoop集群中使用先来先出调度算法以来,学者们纷纷提出了各种各样Hadoop集群的作业调度算法,其中最主要的是如下几个:
[0003](I)公平调度算法:公平调度算法适用于多个用户同时使用集群,确保作业都可以相对公平的为作业分配其所需的资源。确保作业在运行的过程,分配到最小的运行资源以此来支持其运行。在资源使用效率和作业吞吐率方面,公平算法有很大程度的提高。
[0004](2)自适应调度算法:2014年Amr M.Elkholy和Elsayed A.H Sallam提出了一种自适应调度算法。自适应调度算法将用户期待的运行时间作为目标,对资源的异构性和对不同节点所拥有的不同计算能力进行动态的调整和适应。自适应调度算法会通过计算节点所控制的不同数量的Map或Reduce插槽来动态的扩展或缩小TaskTracker所拥有的计算能力。通过对节点所占用插槽的数量的控制,来对剩余资源和未执行作业进行动态分配资源,从而保证在规定的时间内完成作业。
[0005](3 )]\&?(]0¥61—1^11六8 8丨811算法:Hadoop的作业的分配问题是一个NP问题,算法利用快速迭代,产生一系列不同的分配方案,在迭代出的多种资源分配策略中选取相对最优的方案,这个最优方案并不是最优解,只能与最优解无限接近,并且选出的分配策略保证数据的本地化性良好。
[0006]但是上述这些现有的算法不够理想,都有一定的局限性,即用户所提交的作业在等待分配系统资源时等待时间过长,而且在多作业情况下会导致资源分配不均衡,这两方面的缺点会导致集群中作业失败率提高,节点执行效率低和资源使用率低的问题。
[0007]因此,亟需设计一种资源调度方法和系统,以提高节点的执行效率,提高资源的使用率。

【发明内容】

[0008]有鉴于此,本发明实施例的目的在于提供一种基于关键资源和数据预处理的资源调度方法及识别系统,旨在解决现有技术中集群作业失败率较高,且节点执行效率低和资源使用率低的问题。
[0009]本发明实施例是这样实现的,一种基于关键资源和数据预处理的资源调度方法,包括:
[0010]在集群执行作业过程中生成节点队列;
[0011]根据所述生成节点队列选取目标节点以及预备作业任务;
[0012]通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0013]优选的,所述在集群执行作业过程中生成节点队列的步骤具体包括:
[0014]在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
[0015]在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
[0016]如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
[0017]优选的,所述根据所述生成节点队列选取目标节点以及预备作业任务的步骤具体包括:
[0018]读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
[0019]轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
[0020]如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
[0021 ]优选的,所述通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行的步骤具体包括:
[0022]通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
[0023]根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
[0024]将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
[0025]通过分布式文件系统来管理传输到所述目标节点的数据文件;
[0026]当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
[0027]另一方面,本发明还提供一种基于关键资源和数据预处理的资源调度系统,包括:
[0028]生成模块,用于在集群执行作业过程中生成节点队列;
[0029]选取模块,用于根据所述生成节点队列选取目标节点以及预备作业任务;
[0030]调度模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0031 ]优选的,所述生成模块具体包括:
[0032]第一排列子模块,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列;
[0033]计算子模块,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间;
[0034]第二排列子模块,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
[0035]优选的,所述选取模块具体包括:
[0036]第一选择子模块,用于读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点;
[0037]第二选择子模块,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务;
[0038]判断子模块,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
[0039]优选的,所述调度模块具体包括:
[0040]第一标记子模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;
[0041]第二标记子模块,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点;
[0042]第一传输子模块,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点;
[0043]第二传输子模块,用于通过分布式文件系统来管理传输到所述目标节点的数据文件;
[0044]分配子模块,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
[0045]在本发明实施例中,本发明提供的技术方案在作业还未进行调度之前,对集群中的所有计算节点进行排序,对计算节点释放资源所需时间进行排队,每次选择最先释放资源的节点,接着对集群中的失败作业或已提交但未执行本地化的作业进行选择,最后对选择的作业的三个数据副本进行选择,得到距离计算节点最近的数据文件进行数据传输。本发明提供的技术方案能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
【附图说明】
[0046]图1为本发明一实施方式中基于关键资源和数据预处理的资源调度方法流程图;
[0047]图2为本发明一实施方式中图1所示步骤Sll的子步骤流程图;
[0048]图3为本发明一实施方式中图1所示步骤S12的子步骤流程图;
[0049]图4为本发明一实施方式中图1所示步骤S13的子步骤流程图;
[0050]图5为本发明一实施方式中基于关键资源和数据预处理的资源调度系统结构示意图;
[0051 ]图6为本发明一实施方式中图5所示生成模块11的内部结构示意图;
[0052]图7为本发明一实施方式中图5所示选取模块12的内部结构示意图;
[0053]图8为本发明一实施方式中图5所示调度模块13的内部结构示意图。
【具体实施方式】
[0054]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0055]本发明【具体实施方式】提供了一种基于关键资源和数据预处理的资源调度方法,主要包括如下步骤:
[0056]S11、在集群执行作业过程中生成节点队列;
[0057]S12、根据所述生成节点队列选取目标节点以及预备作业任务;
[0058]S13、通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0059]本发明所提供的一种基于关键资源和数据预处理的资源调度方法,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
[0060]以下将对本发明所提供的一种基于数据预处理的资源调度方法进行详细说明。
[0061]请参阅图1,为本发明一实施方式中基于关键资源和数据预处理的资源调度方法流程图。
[0062]在步骤Sll中,在集群执行作业过程中生成节点队列。
[0063]在本实施方式中,步骤Sll具体包括Slll、S112、S113这三个子步骤,如图2所示。
[0064]请参阅图2,为本发明一实施方式中图1所示步骤Sll的子步骤流程图。
[0065]在步骤Slll中,在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列。
[0066]在本实施方式中,集群包括从节点与主节点,在集群的每一个心跳周期中,从节点向主节点发送心跳信息来确定节点是否有空闲资源,报告有空闲的资源时,此时该拥有空闲资源的节点会被加入到所述节点队列中并按照顺序排列。
[0067]在步骤S112中,在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间。
[0068]在本实施方式中,当集群中的主节点对从节点进行轮询时,没有出现拥有空闲资源的节点时,则要依据节点释放资源的速度进行判断。在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间,即通过作业的已使用时间和已完成百分率来计算作业完成所需的剩余时间,作业的执行效率指的是已进行资源分配的作业在单位时间内所完成的进度,其中,作业的执行效率可表示为:Rate = Progress/(currentTime-startTime),其中,currentTime表不当前时间,startTime表不开始时间,当前节点的作业完成所需的剩余时间通过以下公式计算得到:IeftTime = 1-progress/Rate,其中,IeftTime表示剩余时间。
[0069]在本实施方式中,集群内部网络是采用局域网高速互联,因此局域网内部的理论传输速度是可以通过网络设备自身的参数获悉,也就是说可以通过网络中的传输速率来计算一个作业所需的数据块在所述当前节点中传输的传输时间,每个数据块在集群中的大小是固定的,即blockSize为64MB,当局域网带宽在100M时,集群的数据传送效率约为每秒10兆,一个作业所需的数据块在所述当前节点中传输的传输时间可以表示为:tranTime =blockSize/transRate,其中,transRate表不数据传送效率,transT ime表不传输时间。
[0070]在步骤S113中,如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
[0071]请继续参阅图1,在步骤S12中,根据所述生成节点队列选取目标节点以及预备作业任务。
[0072]在本实施方式中,步骤S12具体包括S121、S122、S123这三个子步骤,如图3所示。
[0073]请参阅图3,为本发明一实施方式中图1所示步骤S12的子步骤流程图。
[0074]在步骤S121中,读取最新更新的所述节点队列(NodeQueue)中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点。
[0075]在本实施方式中,目标节点是作业任务额外完成时间最小且拥有足够的时间完成任务数据本地化。
[0076]在步骤S122中,轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务。
[0077]在本实施方式中,运行失败的作业在集群内拥有较高的优先级,作业失败后可以快速的被重新分配资源,从而提高作业的执行进度,集群会维护一个失败作业(failedTask)的队列,即失败队列,集群会为失败任务赋予最高的优先级,若失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与目标节点(AimNode)进行数据本地性判断,如果是本地节点任务则算法结束,如果尚未完成本地化操作则将选取的任务标记为预备作业任务(ReadyTask)。
[0078]在步骤S123中,如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
[0079]在本实施方式中,如果预备作业(ReadyTask)为空,则表示当前集群没有失败任务存在,于是在已提交但未分配资源的提交作业队列(SubmitQueue)中选择作业,如果存在符合条件的作业,就将此任务与之前所选出的目标节点(AimNode)的数据进行本地性判断,如果未执行任务中存在本地化任务,则算法结束,反之,则将未执行任务标记为预备作业(ReadyTask)。
[0080]请继续参阅图1,在步骤S13中,通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0081 ] 在本实施方式中,步骤S13具体包括S131?S135这三个子步骤,如图4所示。
[0082]请参阅图4,为本发明一实施方式中图1所示步骤S13的子步骤流程图。
[0083]在步骤S131中,通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合。
[0084]在本实施方式中,通过调度算法找到的目标节点和预备作业任务,通过作业对应的TaskInProgress来获取作业所需资源的相关的元数据信息,通过获取相关数据块所在的目标位置信息集来确定需要进行数据传输的节点,在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合,记为 SourceNodes。
[0085]在步骤S132中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
[0086]在本实施方式中,通过读取配置信息,得到网络环境配置情况,判断与目标节点AimNode最近的预备作业的数据文件所在的位置,Hadoop中节点与数据文件存在以下的四种可能:位于同一个节点,即数据已经完成了本地化操作;位于同一个机架,不同节点;位于同一个中心的其他机架上;位于不同的数据中心。这四种情况,数据进行传输的成本是不同的,所以要依据数据不同的存储位置,确定对其中哪一个数据块进行网络传输操作。数据文件位置不同,所造成的传输成本不同,因此依据传输成本大小,来为其确定不同的权值。在本实施方式中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
[0087]在步骤S133中,将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点。
[0088]在本实施方式中,通过在步骤S132的计算,从目标位置信息集中选择一个距离目标节点最近节点,记为源节点(SourceNode),将目标任务所需的输入数据通过网络传输到目标节点上。
[0089]在步骤S134中,通过分布式文件系统来管理传输到所述目标节点的数据文件。[°09°]在本实施方式中,更新JobTracker的文件信息,通过分布式文件系统(HadoopDistributed File System,HDFS)来管理通过传输到达目标节点的数据文件。
[0091]在步骤S135中,当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
[0092]在本实施方式中,当目标节点上的作业执行结束后,会在心跳周期内,使用指令通知主节点为目标节点分配新的作业,此时,将ReadyTask中的作业调度到指定位置,此作业所需文件完成传输,保存在了本地,此时此任务相当于已经完成了数据本地化操作,无需等待,可以直接运行。
[0093]本发明所提供的一种基于关键资源和数据预处理的资源调度方法,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
[0094]本发明【具体实施方式】还提供一种基于关键资源和数据预处理的资源调度系统10,主要包括:
[0095]生成模块11,用于在集群执行作业过程中生成节点队列;
[0096]选取模块12,用于根据所述生成节点队列选取目标节点以及预备作业任务;
[0097]调度模块13,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0098]本发明所提供的一种基于关键资源和数据预处理的资源调度系统10,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
[0099]请参阅图5,所示为本发明一实施方式中基于关键资源和数据预处理的资源调度系统10的结构示意图。在本实施方式中,基于关键资源和数据预处理的资源调度系统10包括生成模块11、选取模块12以及调度模块13。
[0100]生成模块11,用于在集群执行作业过程中生成节点队列。
[0101]在本实施方式中,生成模块11具体包括第一排列子模块111、计算子模块112、第二排列子模块113这三个子模块,如图6所示。
[0102]请参阅图6,为本发明一实施方式中图5所示生成模块11的内部结构示意图。
[0103]第一排列子模块111,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列。
[0104]在本实施方式中,集群包括从节点与主节点,在集群的每一个心跳周期中,从节点向主节点发送心跳信息来确定节点是否有空闲资源,报告有空闲的资源时,此时该拥有空闲资源的节点会被加入到所述节点队列中并按照顺序排列。
[0105]计算子模块112,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间。
[0106]在本实施方式中,当集群中的主节点对从节点进行轮询时,没有出现拥有空闲资源的节点时,则要依据节点释放资源的速度进行判断。在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间,即通过作业的已使用时间和已完成百分率来计算作业完成所需的剩余时间,作业的执行效率指的是已进行资源分配的作业在单位时间内所完成的进度,其中,作业的执行效率可表示为:Rate = Progress/(currentT ime-startT ime),其中,currentTime 表不当前时间,startTime 表不开始时间,当前节点的作业完成所需的剩余时间通过以下公式计算得到:IeftTime = Ι-progress/Rate,其中,IeftTime表示剩余时间。
[0107]在本实施方式中,集群内部网络是采用局域网高速互联,因此局域网内部的理论传输速度是可以通过网络设备自身的参数获悉,也就是说可以通过网络中的传输速率来计算一个作业所需的数据块在所述当前节点中传输的传输时间,每个数据块在集群中的大小是固定的,即blockSize为64MB,当局域网带宽在100M时,集群的数据传送效率约为每秒10兆,一个作业所需的数据块在所述当前节点中传输的传输时间可以表示为:tranT ime =blockSize/transRate,其中,transRate表不数据传送效率,transT ime表不传输时间。
[0108]第二排列子模块113,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。
[0109]请继续参阅图5,选取模块12,用于根据所述生成节点队列选取目标节点以及预备作业任务。
[0110]在本实施方式中,选取模块12具体包括第一选择子模块121、第二选择子模块122、判断子模块123这三个子模块,如图7所示。
[0111]请参阅图7,为本发明一实施方式中图5所示选取模块12的内部结构示意图。
[0112]第一选择子模块121,用于读取最新更新的所述节点队列(NodeQueue)中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点。
[0113]在本实施方式中,目标节点是作业任务额外完成时间最小且拥有足够的时间完成任务数据本地化。
[0114]第二选择子模块122,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务。
[0115]在本实施方式中,运行失败的作业在集群内拥有较高的优先级,作业失败后可以快速的被重新分配资源,从而提高作业的执行进度,集群会维护一个失败作业(failedTask)的队列,即失败队列,集群会为失败任务赋予最高的优先级,若失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与目标节点(AimNode)进行数据本地性判断,如果是本地节点任务则算法结束,如果尚未完成本地化操作则将选取的任务标记为预备作业任务(ReadyTask)。
[0116]判断子模块123,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。
[0117]在本实施方式中,如果预备作业(ReadyTask)为空,则表示当前集群没有失败任务存在,于是在已提交但未分配资源的提交作业队列(SubmitQueue)中选择作业,如果存在符合条件的作业,就将此任务与之前所选出的目标节点(AimNode)的数据进行本地性判断,如果未执行任务中存在本地化任务,则算法结束,反之,则将未执行任务标记为预备作业(ReadyTask)。
[0118]请继续参阅图5,调度模块13,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。
[0119]在本实施方式中,调度模块13具体包括第一标记子模块131、第二标记子模块132、第一传输子模块133、第二传输子模块134、分配子模块135这五个子模块,如图8所不。
[0120]请参阅图8,为本发明一实施方式中图5所示调度模块13的内部结构示意图。
[0121 ]第一标记子模块131,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合。
[0122]在本实施方式中,通过调度算法找到的目标节点和预备作业任务,通过作业对应的TaskInProgress来获取作业所需资源的相关的元数据信息,通过获取相关数据块所在的目标位置信息集来确定需要进行数据传输的节点,在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合,记为 SourceNodes。
[0123]第二标记子模块132,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
[0124]在本实施方式中,通过读取配置信息,得到网络环境配置情况,判断与目标节点AimNode最近的预备作业的数据文件所在的位置,Hadoop中节点与数据文件存在以下的四种可能:位于同一个节点,即数据已经完成了本地化操作;位于同一个机架,不同节点;位于同一个中心的其他机架上;位于不同的数据中心。这四种情况,数据进行传输的成本是不同的,所以要依据数据不同的存储位置,确定对其中哪一个数据块进行网络传输操作。数据文件位置不同,所造成的传输成本不同,因此依据传输成本大小,来为其确定不同的权值。在本实施方式中,根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点。
[0125]第一传输子模块133,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点。
[0126]在本实施方式中,通过在第二标记子模块132的计算,从目标位置信息集中选择一个距离目标节点最近节点,记为源节点(SourceNode),将目标任务所需的输入数据通过网络传输到目标节点上。
[0127]第二传输子模块134,用于通过分布式文件系统来管理传输到所述目标节点的数据文件。
[0128]在本实施方式中,更新JobTracker的文件信息,通过分布式文件系统(HadoopDistributed File System,HDFS)来管理通过传输到达目标节点的数据文件。
[0129]分配子模块135,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。
[0130]在本实施方式中,当目标节点上的作业执行结束后,会在心跳周期内,使用指令通知主节点为目标节点分配新的作业,此时,将ReadyTask中的作业调度到指定位置,此作业所需文件完成传输,保存在了本地,此时此任务相当于已经完成了数据本地化操作,无需等待,可以直接运行。
[0131]本发明所提供的一种基于关键资源和数据预处理的资源调度系统10,能缩短已提交作业在集群中的等待时间,降低作业的失败率,提高节点的执行效率,提高资源的使用率。
[0132]值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0133]另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。
[0134]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于关键资源数据预处理的资源调度方法,其特征在于,所述基于关键资源和数据预处理的资源调度方法包括: 在集群执行作业过程中生成节点队列; 根据所述生成节点队列选取目标节点以及预备作业任务; 通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。2.如权利要求1所述的基于关键资源和数据预处理的资源调度方法,其特征在于,所述在集群执行作业过程中生成节点队列的步骤具体包括: 在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列; 在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间; 如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。3.如权利要求2所述的基于关键资源和数据预处理的资源调度方法,其特征在于,所述根据所述生成节点队列选取目标节点以及预备作业任务的步骤具体包括: 读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点; 轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务; 如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。4.如权利要求3所述的基于关键资源和数据预处理的资源调度方法,其特征在于,所述通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行的步骤具体包括: 通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合;根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点; 将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点; 通过分布式文件系统来管理传输到所述目标节点的数据文件; 当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位置。5.一种基于关键资源和数据预处理的资源调度系统,其特征在于,所述基于关键资源和数据预处理的资源调度系统包括: 生成模块,用于在集群执行作业过程中生成节点队列; 选取模块,用于根据所述生成节点队列选取目标节点以及预备作业任务; 调度模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息调度所述预备作业任务中的作业进行执行。6.如权利要求5所述的基于关键资源和数据预处理的资源调度系统,其特征在于,所述生成模块具体包括: 第一排列子模块,用于在集群的每一个心跳周期中,利用集群内的从节点向集群内的主节点发送的心跳信息来确定节点是否有空闲资源,并在有空闲资源时将拥有空闲资源的节点加入到所述节点队列中并按照顺序排列; 计算子模块,用于在没有空闲资源时,利用节点释放资源的速度来计算当前节点的作业完成所需的剩余时间以及计算一个作业所需的数据块在所述当前节点中传输的传输时间; 第二排列子模块,用于如果所述剩余时间小于所述传输时间,则取消此次数据块的传输操作并将所述当前节点作为失败节点添加到失败队列中,如果所述剩余时间大于所述传输时间,则将所述当前节点添加到所述节点队列中并按照顺序排列。7.如权利要求6所述的基于关键资源和数据预处理的资源调度系统,其特征在于,所述选取模块具体包括: 第一选择子模块,用于读取最新更新的所述节点队列中的信息,选出在所述节点队列中位于队首位置的节点作为目标节点; 第二选择子模块,用于轮询所述失败队列,如果所述失败队列不为空,则从中选择失败次数最多的任务,将选取出的失败次数最多的任务与所述目标节点进行数据本地性判断,如果是本地节点任务则结束算法,如果尚未完成本地化操作则将选取的任务标记为预备作业任务; 判断子模块,用于如果所述失败队列为空,则在已提交但未分配资源的提交作业队列中选择作业,并将符合选择条件的作业的任务与所述目标节点进行数据本地性判断,如果在未执行任务中存在本地化任务则结束算法,如果在未执行任务中不存在本地化任务则将未执行任务标记为预备作业任务。8.如权利要求7所述的基于关键资源和数据预处理的资源调度系统,其特征在于,所述调度模块具体包括: 第一标记子模块,用于通过调度算法寻找所述目标节点,并在所述预备作业任务中读取相应的任务信息,根据所述任务信息确定需要进行数据传输的所有节点并将所述所有节点标记为节点集合; 第二标记子模块,用于根据当前集群的拓扑结构,选择距离所述预备作业任务最近的节点为源节点; 第一传输子模块,用于将所述预备作业任务运行所需的数据信息通过集群网络传输到所述目标节点; 第二传输子模块,用于通过分布式文件系统来管理传输到所述目标节点的数据文件; 分配子模块,用于当所述目标节点上的作业执行结束后,在心跳周期内使用指令通知主节点为所述目标节点分配所述预备作业任务中的新作业,并将所述新作业调度到指定位 置。
【文档编号】G06F9/48GK105868008SQ201610169538
【公开日】2016年8月17日
【申请日】2016年3月23日
【发明人】刘刚, 李旭炜, 毛睿
【申请人】深圳大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1