首页> 中国专利> 一种云计算环境中分布式计算模式下的任务动态调度方法

一种云计算环境中分布式计算模式下的任务动态调度方法

摘要

一种云计算环境中分布式计算模式下的任务动态调度方法,该方法有四大步骤:步骤一、主节点接收子节点的心跳信息并加以分析;步骤二、主节点根据节点状态表和任务状态表预分配任务;步骤三、子节点向主节点索取任务;步骤四、主节点为子节点分配任务。本发明首先考虑任务的资源需求及节点的性能信息,在满足需求的情况下对任务的分配进行动态控制,从而提高作业的响应速度和节点的资源使用率。它在云计算环境下的分布式计算技术领域里具有广泛地实用价值和应用前景。

著录项

  • 公开/公告号CN102073546A

    专利类型发明专利

  • 公开/公告日2011-05-25

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201010583597.9

  • 申请日2010-12-13

  • 分类号G06F9/50(20060101);

  • 代理机构11232 北京慧泉知识产权代理有限公司;

  • 代理人王顺荣;唐爱华

  • 地址 100191 北京市海淀区学院路37号北航计算机学院

  • 入库时间 2023-12-18 02:39:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-06

    未缴年费专利权终止 IPC(主分类):G06F9/50 授权公告日:20130710 终止日期:20181213 申请日:20101213

    专利权的终止

  • 2019-03-08

    文件的公告送达 IPC(主分类):G06F9/50 收件人:上海君是信息科技有限公司 文件名称:缴费通知书 申请日:20101213

    文件的公告送达

  • 2017-02-15

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/50 变更前: 变更后: 申请日:20101213

    专利权人的姓名或者名称、地址的变更

  • 2015-05-27

    专利权的转移 IPC(主分类):G06F9/50 变更前: 变更后: 登记生效日:20150512 申请日:20101213

    专利申请权、专利权的转移

  • 2013-07-10

    授权

    授权

  • 2012-02-22

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20101213

    实质审查的生效

  • 2011-05-25

    公开

    公开

查看全部

说明书

(一)技术领域

本发明涉及一种分布式计算模型的任务调度方法。具体涉及到一种云计算环境中分布式计算模式下的任务动态调度方法。它是一种任务调度子系统中任务的基于节点性能的动态调度方法,属于计算机技术领域。

(二)背景技术

目前,随着网络应用的飞速发展使得对计算能力的需求不断增加,伴随着网格计算、并行计算、分布式计算的发展,云计算应运而生,被列为国家未来重点发展的技术方向,并成为了当今计算机研究界和工业界的热点研究课题。随着云计算的流行,越来越多的网络(Web)服务和商业应用被部署到云计算环境中,对于云环境中处理应用层计算请求的分布式节点来说,如何通过任务的调度以高效处理上层计算请求,提高性能上异构的分布式节点的资源的使用率,并提升作业的响应速度成为当前云计算领域的研究热点。

在对云环境中的海量数据进行处理时,以分布式存储和分布式并行处理为基础的任务调度是关键步骤之一。改进作业和任务的调度方法是目前的研究热点,国内外研究主要包括多作业并行运行时作业之间的调度、单作业运行时子任务的调度和并行运行的子任务数量的最优化等方面。

在作业的调度方面,当前的最基本的调度方式为先进先出的作业调度方法,毋庸置疑,这种作业处理方法有很多弊端,尤其是在作业数量较多时,整体响应时间很长。公平调度器(Fair scheduler)的提出较好的解决了这个问题,当单独一个作业在运行时,它将使用整个集群。当有其它作业被提交时,系统会将任务空闲时间片赋给这些新的作业,以使得每一个作业都大概获取到等量的CPU时间,并且使小任务得到快速响应的同时保证大任务的服务水平。容量调度器(Capacity scheduler)则支持多队列,作业提交后进入一个队列,资源按队列分配,每个队列中的作业使用该队列的资源;在一个队列中,高优先级的作业可以先于低优先级的作业使用资源;但一旦一个作业开始执行,它就不会被更高优先级的作业抢占;为防止一个或多个用户垄断所有资源,强制为每个队列分配一定比例的资源。中国科学院计算技术研究所提出的基于MR-Predict的三队列调度器根据CPU和I/O使用率将工作负载分成3类,能够在不同类型的工作负载环境下同时提高CPU和I/O资源的使用率。

在任务调度上,加州伯克利大学的研究人员提出的LATE(Longest ApproximateTime to End)调度算法则聚焦于对作业中的备份任务的调度的优化。通过推测完成任务所需要的时间,确保只在速度快的节点上执行估计最晚完成的任务的备份任务。普渡大学的研究人员提出了基于历史统计数据的任务数量最优化配置方法,其研究主要关注在执行作业时,云环境中每个节点上同时运行的任务的数目对性能的影响,根据历史统计数据,获取最优化配置并应用于新的同类作业。

然而,在大多数情况下,不同节点的性能各异,不同时刻各节点的负载状况也不同,如何根据节点的性能异构性及动态负债状况确定任务的动态分配策略,对于高效处理计算任务并提高分布式节点的资源使用率、提升作业的响应速度有重要意义。

(三)发明内容

1、目的:

本发明的主要目的是提供一种云计算环境中分布式计算模式下的任务动态调度方法,它首先考虑任务的资源需求及节点的性能信息,在满足需求的情况下对任务的分配进行动态控制,从而提高作业的响应速度和节点的资源使用率。

为实现上述目的,本发明提出了云计算环境中分布式计算模式下基于节点性能和任务执行状况的任务的动态调度方法,云计算环境下分布式计算节点的组成结构如图1所示,主要包括一个主控节点(主节点)和多个计算节点(子节点),计算节点既可以是物理机,也可以是虚拟机,对主控节点透明,节点间通过网络互联。主控节点与计算节点通过远程过程调用(RPC)方式交互。主控节点主要负责接收计算节点的心跳信息,并加以分析和反馈以控制任务的调度和执行;计算节点除了执行任务以外,还主要负责收集本节点的性能信息和任务执行信息并发送给主控节点。

2、技术方案:

本发明的技术方案是这样的:

本发明一种云计算环境中分布式计算模式下的任务动态调度方法,具体流程如图2所示,该方法包括以下步骤:

步骤201.计算节点动态收集本节点的性能信息及任务执行信息,以心跳信息的形式报告给主控节点。

步骤202.主控节点接收并分析各计算节点的心跳信息,创建并不断更新节点状态表和任务状态表。根据节点状态表和任务状态表,主控节点为计算节点预分配任务,更新节点预取表和任务预分表。

步骤203.如果计算节点中有空的任务槽(task slot)可用,则在下次的心跳信息中加入向主控节点请求任务的标志。

步骤204.主控节点接收到计算节点的任务请求后,按调度策略为其分配任务,并更新节点预取表和任务预分表。

其中,步骤201所述的节点性能信息和任务执行信息是主控节点更新节点状态表和任务状态表的重要数据来源。节点性能信息可包括CPU主频、内存大小、CPU使用率、内存使用率、I/O资源使用率等。任务执行信息包括刚结束的任务执行信息和正在进行中的任务执行信息;刚结束的任务执行信息包括任务的TaskID、所在作业的JobID、用于IO的时间(复制处理数据)和用于CPU计算的时间,其中,复制处理数据发生在该计算节点没有此任务的输入数据的情况下发生;正在进行中的任务执行信息包括任务的TaskID、所在作业的JobID、任务的执行进度和已执行时间。每个计算节点每隔一段时间收集本节点的这两种信息,并封装为心跳信息发送给主控节点。

其中,步骤202中所述的节点状态表和任务状态表是主控节点制定任务分配方案的重要参考信息。节点状态表描述了近一段时期内各计算节点的性能状态,任务状态表记录了各计算节点在近一段时期内处理任务的情况。主控节点第一次接收到计算节点的心跳信息后,创建节点状态表和任务状态表并在以后每次接收到计算节点的心跳信息后更新这两个表。节点状态表包括NodeName、CPU_Speed、MemSize、CPU_Usage、Mem_Usage、IO_Usage这些字段;任务状态表包括JobID、TaskID、NodeName、Time_IO、Time_CPU、Progress、PastTime这些字段。节点预取表和任务预分表记录着当前集群中任务的预分配信息。节点预取表记录了主控节点为计算节点预先分配任务的信息,节点预取表包括NodeName、preFetched、preFetchedTaskID这些字段。任务预分表记录了主控节点将任务预先分配给计算节点的信息,任务预分表包括TaskID、preScheduled、preScheduledNodeName这些字段。

其中,步骤203所述的计算节点的任务槽的大小是指计算节点同一时刻能并行执行的最大任务数,任务槽的大小在分布式节点集群启动前配置好。计算节点只有在有空的任务槽的时候才向主控节点申请任务,任务的申请通过心跳信息传递,心跳信息中包含申请任务的标志位,如果为真则表明该计算节点有空的任务槽,主控节点可以将任务分配给该计算节点执行。

其中,步骤204所述的主控节点为申请任务的计算节点分配任务执行是通过分布式调度算法决定的。分布式调度算法在主控节点的调度器中实现,同一时刻可能有多个计算节点同时申请任务执行,调度器通过读取节点状态表、任务状态表、节点预取表和任务预分表,并结合剩余任务队列,根据分布式调度算法确定为计算节点分配任务的优先次序及任务个数,然后更新节点预取表和任务预分表。

3、优点及功效:本发明一种云计算环境中分布式计算模式下的任务动态调度方法,它与现有技术此,其主要优点是:(1)通过分析计算节点的性能动态变化和历史任务执行信息,使得主控节点对任务的分配更合理,更能充分发挥性能较好的计算节点的性能优势,而原有的任务调度方法都没有考虑各计算节点在性能上的动态变化性;(2)改变了典型的分布式计算模型(如MapReduce)中只要计算节点向主控节点申请任务即可获得任务执行的惯例,而为主控节点赋予了选择计算节点去执行任务的权利,这样就避免了性能较差的计算节点带来的瓶颈问题。

(四)附图说明

图1本发明的云计算环境中分布式计算节点的组成结构示意图

图2云环境中基于分布式节点性能和任务执行状况的任务分布式调度流程示意图

图3本发明包括的三个阶段(初始化、信息更新和任务调度)的交互结构图

图4本发明包括的三个阶段的详细流程图

图5本发明信息更新模块流程示意图

图6本发明任务调度模块流程示意图

图中符号说明如下:

201-204步骤序号;501-505步骤序号;601-604步骤序号;

(五)具体实施方式

为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。

本发明所需满足的设备环境条件见图1,云环境中分布式计算节点的组成结构主要包括一个主控节点(主节点)和多个计算节点(子节点),计算节点既可以是物理机,也可以是虚拟机,对主控节点透明,节点间通过网络互联。主控节点与计算节点通过远程过程调用(RPC)方式交互。主控节点主要负责接收计算节点的心跳信息,并加以分析和反馈以控制任务的调度和执行;其中,节点分析器用于接收和分析计算节点的性能信息,更新节点状态表,任务分析器用于接收和分析计算节点的任务信息,更新任务状态表。计算节点除了执行任务以外,还主要负责收集本节点的性能信息和任务执行信息并发送给主控节点;其中,节点性能监控器负责收集节点最近一段时间的性能信息,任务监控器负责收集节点最近一段时间执行任务的记录信息。

本发明在软件条件方面,要求各节点采用Linux操作系统,安装有Java开发工具包1.6及以上版本。

本发明在环境条件方面,要求各节点能够通过ssh无密码互相访问。

基于节点性能和任务执行状况的任务动态调度流程见图2,主要包括两个内容:(1)计算节点收集封装本节点的心跳信息并发送给主控节点,主控节点根据接收到的心跳信息建立和更新节点状态表和任务状态表;(2)主控节点在接收到计算节点的任务请求后,根据调度算法为计算节点分配任务并更新节点预取表和任务预分表。

该方法包括三个阶段:初始化、信息更新和任务调度。其交互结构如图3所示。在初始化阶段,主控节点接收作业,并建立节点状态表和任务状态表;在信息更新阶段,主控节点接收计算节点的心跳信息并更新节点状态表、任务状态表、节点预取表和任务预分表,若计算节点请求任务,则进入任务调度阶段;在任务调度阶段,主控节点根据节点信息和任务信息为计算节点分配任务,结束后返回信息更新阶段等待计算节点的心跳信息。

下面以一实例进行说明,如图4所示,本发明所述的方法包括以下步骤:

步骤401:计算节点上的节点性能监控器收集本节点的性能信息,任务监控器收集本节点的任务执行信息,再封装成心跳信息,发送给主控节点。信息收集和心跳信息发送的周期为3秒。

步骤402:主控节点接收并分析各计算节点的心跳信息,如果是第一次收到心跳信息,则创建节点状态表和任务状态表,如果已创建,则每收到一个心跳信息就更新节点状态表和任务状态表。主控节点根据节点状态表和任务状态表,为计算节点预分配任务,更新节点预取表和任务预分表。具体如图5的信息更新模块所示。

步骤403:计算节点若有空的任务槽(task slot)可用,则在下次的心跳信息中加入向主控节点请求任务的标志。

步骤404:主控节点接收到计算节点的任务请求后,按调度策略为其分配任务。具体如图6的任务调度模块所示。

信息更新模块的详细流程如图5所示,

步骤501:主控节点监听计算节点的RPC访问,接收计算节点发送的心跳信息。主控节点同一时刻只能接收一个计算节点的心跳信息,如果主控节点在接收某个计算节点的心跳信息时,有其他计算节点也向主控节点发送心跳信息,则主控节点将较晚心跳的计算节点加入等待队列。计算节点上的节点性能监控器监控并收集本节点最近一段时间内的性能信息,任务监控器监控本节点上正在执行的任务的信息并收集已执行的最近的3个历史任务的记录,计算节点将性能信息和任务信息封装为心跳信息。如果最近一段时间内的任务信息没有更新,心跳信息中也可以只包含节点的性能信息。计算节点每隔一段时间将心跳信息通过RPC方式发送给主控节点。心跳周期为3秒。每次心跳时,心跳信息中都应包含节点的性能信息和当前正在执行的任务的信息,而计算节点每执行完一个任务,都在下一次心跳时将刚结束的任务的执行记录加入心跳信息发送给主控节点,即任务信息中包含两类任务信息:已完成但未上报的任务信息(可能为空)和正在进行中的任务信息。

步骤502:主控节点根据接收到的心跳信息,更新节点状态表和任务状态表。对于节点状态表,将心跳信息中的计算节点状态信息覆盖主控节点中节点状态表对应于该计算节点的信息。任务状态表中记录着每个节点上执行的最近3个历史任务的信息和正在进行中的任务信息,主控节点每次收到新的任务状态信息时,首先看是否有已完成但未上报的任务信息,如果有,则获得该任务的TaskID并查看该任务在任务状态表中是否已存在,若存在则更新任务状态表中该任务的信息,否则删除任务状态表中该计算节点的最旧的任务信息并加入该已完成的任务信息。对于正在进行中的任务信息,获得该任务的TaskID,如果该任务在任务状态表中已存在,则更新任务状态表中该任务的信息,否则,在任务状态表中加入该任务的信息。

步骤503:根据节点状态表和任务状态表更新节点预取表和任务预分表。对于任务列表中的第m个任务,根据节点状态表和任务状态表,预测每个节点执行该任务所需的时间,预测算法如下:

>Tiji=Σj-hj-1(ts+tio+tcpu)h,i=1,2......n---(1)>

其中,Tij为第i个计算节点执行其第ji个任务所需的预测时间,ts为出现可用任务槽的时间,ti0为复制数据所需的时间,tcpu为数据处理时间,h为计算节点已经成功执行的任务的参考数目,n为集群中的计算节点数。

获得Tij的值后,主控节点选择最小的一个,向其对应的计算节点预分配任务。并将任务m标记为已预分,将即将执行该任务的计算节点标记为已预取。

接着,主控节点继续在未被标记为已预取的各计算节点中为下一个没有标记为已预分的任务选择执行它的计算节点。每次只预分num个任务,其中num=5。预分完毕后,任务队列里可能还有未被标记为已预分的任务,节点列表中也可能会有未被标记为已预取的节点。

步骤504:如果计算节点在心跳信息中将请求任务字段标记为真,则进入任务调度模块。

任务调度模块的详细流程如图6所示:

步骤601:主控节点首先通过查找节点预取表判断是否已为该节点预先分配任务,如果已预先分配,则为该节点分配已预分的任务,并标记该任务已分配,标记该节点为未预取。

步骤602:如果主控节点没有为该节点预先分配任务,根据步骤503中所述的预测算法,未被标记为已预取的节点是性能较差或计算能力较弱的节点,则从任务队列中选取一个任务给该节点执行,但是并不将该任务标记为已分配,待下次预分时,该任务将被预分给处理速度较快的节点,因而该任务将有一个备份任务在快节点上执行以保证其顺利执行。

步骤603:为计算节点分配任务结束后,主控节点更新节点预取表和任务预分表。

步骤604:任务调度阶段结束,转入信息更新阶段,主控节点继续接收并处理计算节点发送过来的心跳信息。

最后所应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号