一种资源调度方法及装置的制造方法_2

文档序号:9828290阅读:来源:国知局
为3、队列B的优先级为5时,且所述队列A和所述队列B的队列属性信息中没有配置专属服务器信息;能够为所述队列A和所述队列B提供资源的服务器包括服务器C1、C2和C3,则在当前只有服务器Cl处于空闲状态时,优先将所述服务器Cl的资源分配给所述队列A,再分配至所述队列B。
[0044]进一步地,当所述队列的优先级相同时,按先入先出规则为所述队列分配所有服务器的资源。
[0045]具体的,以队列的优先级为5级为例,当队列A的优先级为3、队列B的优先级为3时,且所述队列A和所述队列B的队列属性信息中没有配置专属服务器信息,能够为所述队列A和所述队列B提供资源的服务器包括服务器Cl、C2和C3,则在当前只有服务器Cl处于空闲状态时,根据所述队列A和所述队列B中的作业的时间先后顺序,所述服务器Cl的资源优先为所述队列A和所述队列B中时间在先的作业分配资源。
[0046]采用本实施例的技术方案,不仅实现了特定业务场景下的资源独占,避免了安全性和稳定性要求较高的特殊业务之间相互抢占资源所带来的不利影响。而且充分利用了资源,大大提高了资源利用率。
[0047]本发明实施例还提供了一种资源调度装置;图2为本发明实施例一的资源调度装置的组成结构示意图;如图2所示,所述装置包括:配置单元21和调度单元22 ;其中,
[0048]所述配置单元21,用于预先配置队列属性信息;所述队列属性信息包括队列的专属服务器信息,以及所述队列的优先级信息;
[0049]所述调度单元22,用于基于所述配置单元21配置的所述队列的专属服务器信息以及所述队列的优先级信息进行资源调度。
[0050]本实施例中,所述资源调度装置在实际应用中,可通过分布式文件系统中的主节点中的调度器实现。
[0051]依据本发明实施例的另一优选实施例,所述调度单元22,用于按所述队列的优先级由高到低为所述队列分配所述队列对应的专属服务器的资源。
[0052]进一步地,所述调度单元22,还用于当所述队列的优先级相同时,按先入先出规则为所述队列分配所述队列对应的专属服务器的资源。
[0053]依据本发明实施例的另一优选实施例,所述调度单元22,还用于当所述配置单元21配置的所述队列属性信息中不包括所述队列的专属服务器信息,或者所述队列的专属服务器信息配置为空时,按所述队列的优先级由高到低为所述队列分配所有服务器的资源。
[0054]进一步地,所述调度单元22,还用于当所述队列的优先级相同时,按先入先出规则为所述队列分配所有服务器的资源。
[0055]本领域技术人员应当理解,本发明实施例的资源调度装置中各处理单元的功能,可参照前述资源调度方法的相关描述而理解,本发明实施例的资源调度装置中各处理单元,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件在智能终端上的运行而实现。
[0056]本实施例中,所述装置中的配置单元21和调度单元22,在实际应用中可由所述装置中的中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,DigitalSignal Processor)或可编程门阵列(FPGA, Field — Programmable Gate Array)实现。
[0057]本发明实施例还提供了一种资源调度方法;图3为本发明实施例二的资源调度方法的流程示意图;如图3所示,所述方法包括:
[0058]步骤301:资源管理节点(ResourceManager)向资源调度器(ResourceScheduler)发送初始化消息,以初始化所述资源调度器。
[0059]步骤302:所述资源调度器加载队列配置文件。所述队列配置文件中新增队列属性信息,所述队列属性信息包括配置项信息,所述配置项信息用于为队列配置的服务器或服务器群;其中,所述配置项具体可以如下所示:yarn.queueAl.hosts = Cl, C3 ;其中,Cl和C3表示为队列配置的专属服务器标识,所述专属服务器标识可以是所述专属服务器的主机名或者主机的IP地址,两个专属服务器标识之间用逗号分隔;若所述配置项中没有表示为队列配置的专属服务器标识,则说明为无队列配置的专属服务器。所述队列属性信息中还包括队列的优先级信息,所述队列的优先级信息用于配置队列优先级;例如队列优先级分为5级,其中,队列优先级I级为最高级;当没有配置队列的优先级信息时,默认所述队列的优先级为最低级,即默认所述队列的优先级为5级;进一步的,将所述队列配置文件加载至对应的队列对象(Queue)中。
[0060]步骤303:所述资源调度器遍历队列对象,获取每个队列的队列属性信息。
[0061]这里,所述资源调度器从根队列开始,从根队列到叶子队列遍历整个层级队列,获取每个队列的队列属性信息,即获取队列的专属服务器相关信息和队列的优先级信息,将所述队列的专属服务器相关信息和所述队列的优先级信息保存在内存对象中。
[0062]具体的,图4为本发明实施例二中资源调度器对队列进行的遍历的示意图;如图4所示,假定系统中包括Al、A2和B三个叶子队列,处理作业的服务器包括Cl、C2和C3三个服务器;则资源调度器从根队列(ROOT)开始,从根队列到叶子队列遍历层级队列;获得叶子队列A1、A2、B的队列属性信息;如图3所示。获得叶子队列Al的优先级为3,Cl服务器和C3服务器是叶子队列Al的专属服务器;获得叶子队列A2的优先级为3,Cl服务器和C2服务器是叶子队列A2的专属服务器;叶子队列B无配置项信息和优先级信息的设置,则表明叶子队列B的优先级为5,以及所有服务器均可处理所述叶子队列B中的作业,但是仅当所有服务器中任一服务器处于空闲状态时,才能够处理所述叶子队列B中的作业。
[0063]则每个服务器对应处理的队列信息如下所示:
[0064]Cl服务器对应处理的队列为:A1 (优先级为3)、A2(优先级为3)、B (优先级为5);
[0065]C2服务器对应处理的队列为-M (优先级为3)、B (优先级为5);
[0066]C3服务器对应处理的队列为:A1 (优先级为3)、B (优先级为5)。
[0067]步骤304:从HDFS的分布式计算引擎的临时目录获取作业切片信息,并根据所述作业切片信息生成内部作业(Task)对象。
[0068]步骤305:作业管理程序(AppMaster)根据所述Task对象获取Task的资源请求信息,所述Task的资源请求信息包括:任务优先级、期望资源所在主机(Host)、资源量(具体包括内存、中央处理器等)、容器(Container)数量、是否松弛本地性等属性信息。
[0069]步骤306:作业管理程序(AppMaster)向资源管理节点(ResourceManager)发送心跳消息以请求资源分配。
[0070]步骤307:资源管理节点(ResourceManager)触发资源调度器,并将作业管理程序(AppMaster)的资源分配请求保存到所述资源管理节点(ResourceManager)的内存中。
[0071]步骤308:计算节点(NodeManager)向资源管理节点(ResourceManager)上报心跳消息,并释放空闲Container,以便为所述资源管理节点(ResourceManager)准备新的资源分配。
[0072]步骤309:资源管理节点(ResourceManager)触发资源调度器进行资源分配。
[0073]步骤310:资源调度器清理内部Container。
[0074]步骤311:资源调度器从根队列开始遍历队列树;并通过二叉树算法查找到高优先级的叶子队列。图5为本发明实施例二中资源调度器对队列进行资源调度的示意图;如图5所示,资源调度器利用步骤303中保存的队列属性信息,当作业提交到某个特定队列时,所述特定队列配置专属服务器
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1