一种于Hadoop平台中动态调整任务数目的方法及系统的制作方法

文档序号:6524394阅读:117来源:国知局
一种于Hadoop平台中动态调整任务数目的方法及系统的制作方法
【专利摘要】本发明公开了一种于Hadoop平台中动态调整任务数目的方法及系统,包括:步骤10,持续获取节点中运行的任务的执行速率;步骤20,计算执行速率在下降的任务的个数;步骤30,根据该个数判断是否需要调整节点中所运行的任务的数目。本发明自动的调整节点上运行的任务数目,以使Hadoop平台体现出较高的任务执行效率。使用感知节点的计算能力、任务执行状态实现动态调整Slots数目,有效的感知了集群和作业的异构性。实现集群运行任何异构性的作业或者作业运行在任何异构性的集群中都能使Hadoop平台体现出良好的性能。
【专利说明】—种于Hadoop平台中动态调整任务数目的方法及系统
【技术领域】
[0001]本发明涉及Hadoop分布式计算平台,特别是涉及于MapReduce计算框架下进行任务调度的方法及系统。
【背景技术】
[0002]在云计算模式下,Hadoop平台为数据中心的用户提供了大量的服务,与此同时,由于数据中心机器的多样性、用户提交作业的复杂性、处理的数据与日俱增,Hadoop平台本身面临着巨大的挑战,并且这些挑战对Hadoop的性能有较大的影响。因此,如何使得Hadoop平台更适应集群的多样性、作业的复杂性,增强其健壮性,保持其原有的可扩展性、低成本、高效率、容错性等特性成为了改善Hadoop性能的关键。
[0003]针对Hadoop性能的优化,目前可分为四类:
[0004]1.以提高集群中资源利用率为目的的优化,如Fairness Scheduler [I] [2] [3][11]、Capacity Scheduler [4]、A Dynamic Map Reduce Scheduler [8],这些优化方法的共同点都是将用户提交的作业组织成不同的队列,然后为每一个队列分配不同大小的资源,以达到资源公平的、充分的使用。
[0005]2.以增加任务本地化的比例来缩短作业执行时间为目的的优化,如DelayScheduler [5]、Locality-Aware Scheduler [12],这些优化方法的共同点是通过数据分布的信息,增加任务本地化执行的数量,减少由于任务拷贝数据所花费的IO时间来缩短任务执行的时间。
[0006]3.以提高系统吐吞量为目的的优化,如Context Aware Scheduler [10],优化方案的特点是将任务和节点同时按照CPU密集型和IO密集型进行划分,然后将任务依据对不同类型的节点的需求进行分配,改善系统的吞吐量。
[0007]4.通过优化推测任务执行来缩短作业的执行时间,如LATE Scheduler [6] [7]、ALoad-Aware Scheduler [9],这些优化方法的共同点是通过实时获取作业执行进度的信息及数据所存放的位置,提高推测任务执行的准确率、本地化率,达到缩短作业执行时间的目的。
[0008]但是依丨日没有解决的问题是:
[0009]Hadoop平台无法感知集群节点的异构性状况,无法根据节点自身的处理能力合理有效的初始化集群配置,同时也无法根据任务的执行状况、集群中异构节点的处理能力和资源使用情况自动的调整节点上运行的任务数目和资源使用情况,即无论任务的当前任务的执行速率如何以及系统的各个资源消耗状态如何,Hadoop都无法自动的调整节点上资源的使用状态以使任务的执行达到高效的状态且系统资源得到充分的利用。因为目前Hadoop调度算法中没有考虑平台运行在异构环境下的诸多不同的因素及变化因素,也没有在平台运行中提供修改任务Slots的方法和策略。由于上述的问题使得Hadoop平台在集群和作业都是异构的情形下,其性能受到了严重的影响并且遇到了瓶颈。
【发明内容】
[0010]本发明解决的问题在于,自动的调整节点上运行的任务数目,以使Hadoop平台体现出较高的任务执行效率。
[0011]更进一步的,实现集群运行任何异构性的作业或者作业运行在任何异构性的集群中都能使Hadoop平台体现出良好的性能。
[0012]更进一步的,通过感知机制对节点中的资源、任务进行动态的调整,提高集群中的资源使用率以缩短作业的响应时间,使得集群中的资源和任务执行速率达到最佳匹配的状态。
[0013]更进一步的,使用感知节点的计算能力、任务执行状态实现动态调整Slots数目,有效的感知了集群和作业的异构性。
[0014]本发明公开了一种于Hadoop平台中动态调整任务数目的方法,包括:
[0015]步骤10,持续获取节点中运行的任务的执行速率;
[0016]步骤20,计算执行速率在下降的任务的个数;
[0017]步骤30,根据该个数判断是否需要调整节点中所运行的任务的数目。
[0018]步骤10之前还包括:
[0019]步骤1,获取集群中每个节点的处理能力;
[0020]步骤2,获取每个节点的处理资源的使用率。
[0021]所述的方法还包括:
[0022]该获取集群中每个节点的处理能力的步骤进一步包括:读取每个节点上的CPU核数;和/或
[0023]该获取每个节点的处理资源的使用率的步骤进一步包括:每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率。
[0024]该步骤10进一步包括:
[0025]在节点的每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各时间点的执行速率。
[0026]TER= (TaskProgress_New-TaskProgress_01d) /IntervalTime
[0027]其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
[0028]该步骤20进一步包括:
[0029]针对每个任务依次判断:该任务的本次执行速率是否小于该任务的前次执行速率;
[0030]如果是,该任务视为执行速率在下降,该个数增加I。
[0031 ] 该步骤30进一步包括:
[0032]判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold 是否为真,如果是,减少该节点中运行的任务的数目,如果否,增加该节点中运行的任务的数目;
[0033]其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为一阈值。
[0034]该减少该节点中运行的任务的数目的步骤进一步包括:
[0035]判断节点中的当前任务数目,如果大于I且已有任务执行结束,减少节点中运行的空闲任务的数目;其余情况返回。
[0036]该增加该节点中运行的任务的数目的步骤进一步包括:
[0037]判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是,进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务;其余情况返回。
[0038]本发明还公开了一种Hadoop平台中动态调整任务数目的系统,包括:
[0039]执行速率获取装置,持续获取节点中运行的任务的执行速率;
[0040]个数计算装置,计算执行速率在下降的任务的个数;
[0041]调整判断装置,根据该个数判断是否需要调整节点中所运行的任务的数目。
[0042]所述的系统还包括:
[0043]处理能力获取装置,获取集群中每个节点的处理能力;
[0044]处理资源获取装置,获取每个节点的处理资源的使用率。
[0045]所述的系统还包括:
[0046]该处理能力获取装置进一步包括:读取每个节点上的CPU核数的单元;和/或
[0047]该处理资源获取装置进一步包括:每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率的单元。`
[0048]该执行速率获取装置进一步包括:
[0049]在节点的每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各时间点的执行速率的单元。
[0050]TER= (TaskProgress_New-TaskProgress_01d) /IntervalTime
[0051]其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
[0052]该个数计算装置进一步包括:
[0053]针对每个任务依次判断:该任务的本次执行速率是否小于该任务的前次执行速率,如果是,该任务视为执行速率在下降,该个数增加I的单元。
[0054]该调整判断装置进一步包括:
[0055]判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold 是否为真的单兀,如果是,调用减少该节点中运行的任务的数目的单元,如果否,调用增加该节点中运行的任务的数目的单元;其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为一阈值。
[0056]该减少该节点中运行的任务的数目的单元进一步包括:
[0057]判断节点中的当前任务数目,如果大于I且已有任务执行结束,减少节点中运行的空闲任务的数目,执行减少节点中运行的空闲任务的数目的模块。
[0058]该增加该节点中运行的任务的数目的单元进一步包括:
[0059]判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是,进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务的单元。
[0060]本发明通过心跳机制传递信息,解决了原有的集群与作业任务之间的隔离问题。同时,自动的调整节点上运行的任务数目,以使Hadoop平台体现出较高的任务执行效率。使用感知节点的计算能力、任务执行状态实现动态调整Slots数目,有效的感知了集群和作业的异构性。实现集群运行任何异构性的作业或者作业运行在任何异构性的集群中都能使Hadoop平台体现出良好的性能。通过感知机制对节点中的资源、任务进行动态的调整,提高集群中的资源使用率以缩短作业的响应时间,使得集群中的资源和任务执行速率达到最佳匹配的状态。
【专利附图】

【附图说明】
[0061]图1所示为本发明的一种于Hadoop平台中动态调整任务数目的方法的流程图;
[0062]图2所示为本发明的一种于Hadoop平台中动态调整任务数目的方法的详细流程图;
[0063]图3A、3B所示为本发明的一种Hadoop平台中动态调整任务数目的系统的示意图。
[0064]图4所示为Hadoop平台的结构示意图。
【具体实施方式】
[0065]Hadoop平台包括主平台100以及多个节点200。主平台100中包括JobTracker节点。每个节点200中包括TaskTracker节点以及DataNode节点。每个节点200的DataNode节点均与一 NameNode节点300连接。
[0066]Hadoop平台中包括多个节点,每个节点均设置有处理器,从而拥有处理能力。同时,每个节点均可接受用户发送的作业,据以运行不同的任务。每个节点具有标志slot,slot用来标识任务是否可以执行且可以同时执行几个。本发明可基于节点中各个任务的运行情况,动态调整所执行的任务的数目,以提高Hadoop平台的任务执行效率。
[0067]如图1所示为本发明的一种于Hadoop平台中动态调整任务数目的方法的流程图。
[0068]步骤10,通过心跳机制持续获取节点中运行的任务的执行速率;
[0069]步骤20,计算执行速率在下降的任务的个数;
[0070]步骤30,根据该个数判断是否需要调整节点中所运行的任务的数目。
[0071]本发明通过持续监控节点中运行的任务的执行速率的变化,而实时调整节点中的任务数目,从而实现集群运行任何异构性的作业或者作业运行在任何异构性的集群中都能使Hadoop平台体现出良好的性能和较高的任务执行效率。
[0072]以下具体描述本发明的实现过程。如图2所示为本发明的一种于Hadoop平台中动态调整任务数目的方法的详细流程图。
[0073]在步骤10之前,执行步骤1:获取集群中每个节点的计算能力。
[0074]获取集群中每个节点的计算能力的步骤通过读取每个节点上的CPU核数的方式来实现。CPU可以是一核、双核或多核,节点上的CPU核数的多寡用于表述该节点的计算能力的高低。通过步骤I可使得Hadoop平台能够感知异构集群中每个节点的处理能力。
[0075]具体而言,步骤I中,Hadoop集群中每个节点会读取Linux系统下/proc/cpuinfo文件,以读取该节点上CPU核数的信息,并把CPU核数作为判断节点计算能力高低的参数存储于TaskTrackerStatus对象中的成员变量coresNum中。
[0076]接下来,用户提交的作业经过初始化生成多个任务已运行在集群中的各个节点上,此时,执行步骤2,获取每个节点的处理资源的使用率。[0077]该步骤2具体可通过每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率的方式来实现。
[0078]具体而言,Hadoop平台管理节点要每隔一段时间获取节点处理资源的使用情况,以作为后续调整任务数目时的参考。节点通过辅助工具OSUtils读取Linux系统下/proc/stat文件计算出当前CPU的使用率,并通过读取Linux系统下/proc/meminfo文件计算内存的使用率,然后,将获取的CPU和内存的使用率存储到TaskTrackerStatus对象中的成员变量 CPU_UtiIization_Factor 与 MEM_UtiIization_Factor 中。为了保证获取的信息能够反映节点当前的状态和任务的执行情况,该固定时间间隔可以是Hadoop平台固有的心跳时间间隔,以借助心跳机制在平台与节点之间传递信息,克服原有的集群与任务之间的隔离问题。
[0079]步骤2以后继续执行步骤10 =Hadoop平台在每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各采样时间点的执行速率。
[0080]也就是说,节点中可能执行着多个任务,对每个任务均进行执行进度的采样,gp,每隔固定时间间隔,获取任务的当前任务执行进度。每两个采样时间点之间间隔该固定时间间隔,每个采样时间点均对应有本次采样得到的当前任务执行进度,则通过相邻的两次采样得到的执行进度,计算得到在后采样时间点的执行速率。该固定时间间隔可以是Hadoop平台固有的心跳时间间隔,即,利用心跳机制传递信息。
[0081]即,TER=(TaskProgress_New-TaskProgress_01d) /IntervalTime
[0082]其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
[0083]具体而言,为节点上运行的多个任务构建一个AttemptMapTask集合并存储于TaskTracker对象中,集合采用Key-Value存储格式,执行MapTask的任务ID (TaskID)作为Key, MapTask的执行进度(TaskProgress)作为Value,为了节省空间集合中仅存放最近一次记录的信息;集合存放形式为{(TaskIDl, TaskProgress_l), (TaskID2,TaskProgress_2),......(TaskIDn, TaskProgress_n) }, n 为节点上同时运行的任务数目。
[0084]Hadoop平台通过任务的执行状态(TaskStatus)获取任务的TaskID和任务本次执行进度(TaskProgress_New)。具体的,获取该节点上本次的状态为Running的TaskID和TaskProgress_New,判断在任务执行进度集合中是否有该TaskID的键值对;如果有,首先取出任务的前次任务执行进度(TaskProgress_01d),然后更新该任务在任务执行进度集合中的当前执行进度值;如果没有,则将前次任务执行进度(TaskPrOgreSS_01d)赋值为零,同时将本次的任务执行进度添加到集合中。根据TaskID到集合中取出的前次任务执行进度TaskProgress_01d,计算对应的任务执行速率。任务执行速率用于描述该节点上任务执行的快慢,该值等于取得的当前任务执行进度(TaskProgress_New)与前次该任务的执行进度(TaskProgress_01d)差比上时间间隔。该时间间隔为固定时间间隔。Hadoop平台通过对当前节点心跳信息的处理而获得任务的执行情况,特别是执行速率。
[0085]接下来执行步骤20,针对每个任务依次判断:该任务的当前执行速率是否小于该任务的前次执行速率;如果是,该任务视为执行速率在下降;统计执行速率下降的任务的个数。
[0086]本发明在每个采样时间点,均对所有任务的当前执行速率进行判断,则对比每个任务的当前执行速率与前次执行速率,即可获知该任务的执行速率是否在下降。
[0087]具体而言,该步骤通过如下方式实现:构建一个TaskTER集合用于存储节点上运行的多个任务,并将集合存储于TaskTracker对象中,存储格式与AttemptMapTask集合一样,执行MapTaskID作为Key,任务的执行速率TER作为Value,为了节省空间集合中仅存放最近一次记录的信息;集合存放形式为{(TaskIDl,TER-1), (TaskID2,
TER-2),.......(TaskIDn,TER-n)},n为节点上同时运行的Task数目。根据步骤10的结
果,获取任务当前的执行速率TER_New及其所对应的TaskID。判断在任务执行速率集合中是否有该TaskID的键值对,如果有,首先取出任务的前次执行速率(TER_01d),然后更新该任务在任务执行速率集合中的当前执行速率值;如果没有,则将前次任务执行速率(TER_Old)赋值为-1,同时将当前的执行速率添加到集合中。比较TER_New的值与TER_01d的值的大小;如果 TER_New 小于 TER_01d,则 TER_Changed_Num 加 I,反之 TER_Changed_Num 值不变。将TER_Changed_Num的值存放在TaskTracker对象中的成员变量中。
[0088]接下来执行步骤30,根据执行速率在下降的任务的个数判断是否需要调整节点中所运行的任务的数目。
[0089]节点中存储有一专门用于判断调整与否的阈值,具体的判断标准为:
[0090]判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold 是否为真,如果是,表明当前节点运行的任务较多,则减少该节点中运行的任务的数目,执行步骤41,该减少的数目可为一预定步数,例如I个或多个;如果否,表明当前节点还有剩余处理资源,则增加该节点中运行的任务的数目,执行步骤42,该增加的数目可为一预定步数,例如I个或多个;其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为该阈值。
[0091]步骤41,判断节点中的当前任务数目,如果大于1,减少节点中运行的空闲任务的数目;如果等于I且该任务已执行结束,减少节点中运行的空闲任务的数目;其余情况返回。
[0092]具体而言,获取节点上当前的任务数(Curr_Slots_Num)、任务的状态(Task_State)、当前空闲任务数(numFreeSlots)、最大任务数(maxMapSlots)、最大的Jvm数(maxjvms);其次,判断减少任务条件是否满足,即判断Curr_Slots_Num的数目,如果大于I且已经有任务执行结束,则减少numFreeSlots、maxMapSlots、maxjvms,其余情况,返回;
[0093]步骤42,判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是,说明配置的任务数目不是最佳的,则进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务;其余情况返回。特别是,根据步骤2的结果,判断剩余处理资源是否大于新增任务所需的最低处理资源阈值。
[0094]具体而言,获取节点上当前的任务数(Curr_Slots_Num)、任务的状态(Task_State)、当前空闲任务数(numFreeSlots)、最大任务数(maxMapSlots)、最大的Jvm数(maxjvms);其次,判断增加任务条件是否满足,即判断Curr_Slots_Num是否已经达到节点的任务最大值(maxMapSlots);如果Curr_Slots_Num等于maxMapSlots,且节点上剩余的处理资源能够满足新增任务的要求,就增加numFreeSlots、maxMapSlots、maxjvms ;其余情况返回。[0095]接下来,步骤41或42执行结束后,执行步骤50,将步骤41或42的执行结果,通过心跳机制发送给JobTracker,由JobTracker根据修改后的任务数目决定任务的分配。其实现方法为:
[0096]修改任务数目后,重新判断用于标识节点是否请求新任务的标志askForNewTask。随后,TaskTracker利用心跳向JobTracker发送请求任务的标志askForNewTask,JobTracker在接受该标志位后,会根据修改后的任务数目和该标志的值,决定任务分配。
[0097]本发明中,在每个采样时间点均执行上述步骤2、10、20、30、41、42、50,则Hadoop平台可随时动态调整节点中的任务数目。
[0098]本发明通过感知节点的计算能力,并根据资源使用情况和任务执行情况动态调整Slots数目,达到任务的执行效率与节点资源的较佳匹配状态。对于构造适合异构性集群和作业的云平台有重要的实际意义,具有良好的市场前景和应用价值。 [0099]另外,对应图1、2所述的方法,本发明还公开了一种Hadoop平台中动态调整任务数目的系统,如图3A、3B所示,包括:
[0100]执行速率获取装置310,持续获取节点中运行的任务的执行速率;
[0101]个数计算装置320,计算执行速率在下降的任务的个数;
[0102]调整判断装置330,根据该个数判断是否需要调整节点中所运行的任务的数目。
[0103]所述系统还包括:处理能力获取装置301,获取集群中每个节点的处理能力;处理资源获取装置302,获取每个节点的处理资源的使用率。
[0104]该处理能力获取装置301进一步包括:读取每个节点上的CPU核数的单元。
[0105]该处理资源获取装置302进一步包括:每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率的单元。
[0106]该执行速率获取装置310进一步包括:在节点的每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各时间点的执行速率的单元。
[0107]TER= (TaskProgress_New-TaskProgress_01d) /IntervalTime
[0108]其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
[0109]该个数计算装置320进一步包括:针对每个任务依次判断:该任务的本次执行速率是否小于该任务的前次执行速率,如果是,该任务视为执行速率在下降,该个数增加I的单元。
[0110]该调整判断装置330进一步包括:
[0111]判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold 是否为真的单兀,如果是,调用减少该节点中运行的任务的数目的单元,如果否,调用增加该节点中运行的任务的数目的单元;其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为一阈值。
[0112]该减少该节点中运行的任务的数目的单元进一步包括:判断节点中的当前任务数目,如果大于I且已有任务执行结束,减少节点中运行的空闲任务的数目,例如减1,执行减少节点中运行的空闲任务的数目的模块。特别的,为了加速算法的收敛,在较短的时间内找出运行任务数目的最优值,减少的任务数可以是根据历史任务信息来决定本次需要减少的任务个数。[0113]该增加该节点中运行的任务的数目的单元进一步包括:判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是说明配置的任务数据还不是最佳的,则进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务的单元。
[0114]本发明通过心跳机制传递的信息,解决了原有的集群与作业任务之间的隔离问题。同时,自动的调整节点上运行的任务数目,以使Hadoop平台体现出较高的任务执行效率。使用感知节点的计算能力、任务执行状态实现动态调整Slots数目,有效的感知了集群和作业的异构性。实现集群运行任何异构性的作业或者作业运行在任何异构性的集群中都能使Hadoop平台体现出良好的性能。通过感知机制对节点中的资源、任务进行动态的调整,提高集群中的资源使用率以缩短作业的响应时间,使得集群中的资源和任务执行速率达到最佳匹配的状态。
【权利要求】
1.一种于Hadoop平台中动态调整任务数目的方法,其特征在于,包括: 步骤10,持续获取节点中运行的任务的执行速率; 步骤20,计算执行速率在下降的任务的个数; 步骤30,根据该个数判断是否需要调整节点中所运行的任务的数目。
2.如权利要求1所述的方法,其特征在于,步骤10之前还包括: 步骤1,获取集群中每个节点的处理能力; 步骤2,获取每个节点的处理资源的使用率。
3.如权利要求2所述的方法,其特征在于,还包括: 该获取集群中每个节点的处理能力的步骤进一步包括:读取每个节点上的CPU核数;和/或 该获取每个节点的处理资源的使用率的步骤进一步包括:每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率。
4.如权利要求1所述的方法,其特征在于,该步骤10进一步包括: 在节点的每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各时间点的执行速率。
5.如权利要求4`所述的方法,其特征在于:
TER = (TaskProgress_New-TaskProgress_01d)/IntervalTime其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
6.如权利要求4所述的方法,其特征在于,该步骤20进一步包括: 针对每个任务依次判断:该任务的本次执行速率是否小于该任务的前次执行速率; 如果是,该任务视为执行速率在下降,该个数增加I。
7.如权利要求1或2所述的方法,其特征在于,该步骤30进一步包括: 判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold是否为真,如果是,减少该节点中运行的任务的数目,如果否,增加该节点中运行的任务的数目; 其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为一阈值。
8.如权利要求7所述的方法,其特征在于,该减少该节点中运行的任务的数目的步骤进一步包括: 判断节点中的当前任务数目,如果大于I且已有任务执行结束,减少节点中运行的空闲任务的数目,其余情况返回。
9.如权利要求7所述的方法,其特征在于,该增加该节点中运行的任务的数目的步骤进一步包括: 判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是,进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务;其余情况返回。
10.一种Hadoop平台中动态调整任务数目的系统,其特征在于,包括: 执行速率获取装置,持续获取节点中运行的任务的执行速率; 个数计算装置,计算执行速率在下降的任务的个数;调整判断装置,根据该个数判断是否需要调整节点中所运行的任务的数目。
11.如权利要求10所述的系统,其特征在于,还包括: 处理能力获取装置,获取集群中每个节点的处理能力; 处理资源获取装置,获取每个节点的处理资源的使用率。
12.如权利要求11所述的系统,其特征在于,还包括: 该处理能力获取装置进一步包括:读取每个节点上的CPU核数的单元;和/或该处理资源获取装置进一步包括:每隔固定时间间隔读取每个节点的CPU使用率以及内存使用率的单元。
13.如权利要求10所述的系统,其特征在于,该执行速率获取装置进一步包括: 在节点的每个任务的执行过程中,以固定时间间隔持续获取该任务的当前执行进度,据以计算各时间点的执行速率的单元。
14.如权利要求13所述的系统,其特征在于:
TER = (TaskProgress_New-TaskProgress_01d)/IntervalTime其中,TaskProgress_New为当前任务执行进度,TaskProgress_01d为前次任务执行进度,TER为执行速率,IntervalTime为固定时间间隔。
15.如权利要求13所述的系统,其特征在于,该个数计算装置进一步包括: 针对每个任务依次判断:该任务的本次`执行速率是否小于该任务的前次执行速率,如果是,该任务视为执行速率在下降,该个数增加I的单元。
16.如权利要求10或11所述的系统,其特征在于,该调整判断装置进一步包括: 判断TER_Changed_Num ^ Curr_Slots_NumX ThresHold是否为真的单兀,如果是,调用减少该节点中运行的任务的数目的单元,如果否,调用增加该节点中运行的任务的数目的单元;其中,TER_Changed_Num为执行速率在下降的任务的个数,Curr_Slots_Num为节点中当前运行的任务数,ThresHold为一阈值。
17.如权利要求16所述的系统,其特征在于,该减少该节点中运行的任务的数目的单元进一步包括: 判断节点中的当前任务数目,如果大于I且已有任务执行结束,减少节点中运行的空闲任务的数目,执行减少节点中运行的空闲任务的数目的模块。
18.如权利要求16所述的系统,其特征在于,该增加该节点中运行的任务的数目的单元进一步包括: 判断节点中的当前任务数目是否等于节点所配置的最大任务数目,如果是,进一步判断节点的剩余处理资源是否大于新增任务所需的最低处理资源阈值,如果是,在节点中增加运行至少一空闲任务的单元。
【文档编号】G06F9/46GK103699433SQ201310700010
【公开日】2014年4月2日 申请日期:2013年12月18日 优先权日:2013年12月18日
【发明者】康凯, 赵霞, 宋 莹, 孙毓忠 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1