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

文档序号:6338283阅读:165来源:国知局
专利名称:一种云计算环境中分布式计算模式下的任务动态调度方法
技术领域
本发明涉及一种分布式计算模型的任务调度方法。具体涉及到一种云计算环境中 分布式计算模式下的任务动态调度方法。它是一种任务调度子系统中任务的基于节点性能 的动态调度方法,属于计算机技术领域。
背景技术
目前,随着网络应用的飞速发展使得对计算能力的需求不断增加,伴随着网格计 算、并行计算、分布式计算的发展,云计算应运而生,被列为国家未来重点发展的技术方向, 并成为了当今计算机研究界和工业界的热点研究课题。随着云计算的流行,越来越多的网 络(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、I0_ Usage 这些字段;任务状态表包括 JobID、TaskID、NodeName、Time_IO、Time_CPU、Progress、 I^stTime这些字段。节点预取表和任务预分表记录着当前集群中任务的预分配信息。节 点预取表记录了主控节点为计算节点预先分配任务的信息,节点预取表包括NodeName、 preFetchecUprei^etchedTaskID这些字段。任务预分表记录了主控节点将任务预先分配给 计算节点的信息,任务预分表包括TaskID、preScheduled, preScheduledNodeName这些字 段。其中,步骤203所述的计算节点的任务槽的大小是指计算节点同一时刻能并行执 行的最大任务数,任务槽的大小在分布式节点集群启动前配置好。计算节点只有在有空的 任务槽的时候才向主控节点申请任务,任务的申请通过心跳信息传递,心跳信息中包含申 请任务的标志位,如果为真则表明该计算节点有空的任务槽,主控节点可以将任务分配给 该计算节点执行。其中,步骤204所述的主控节点为申请任务的计算节点分配任务执行是通过分布 式调度算法决定的。分布式调度算法在主控节点的调度器中实现,同一时刻可能有多个计 算节点同时申请任务执行,调度器通过读取节点状态表、任务状态表、节点预取表和任务预 分表,并结合剩余任务队列,根据分布式调度算法确定为计算节点分配任务的优先次序及 任务个数,然后更新节点预取表和任务预分表。3、优点及功效本发明一种云计算环境中分布式计算模式下的任务动态调度方 法,它与现有技术此,其主要优点是(1)通过分析计算节点的性能动态变化和历史任务执 行信息,使得主控节点对任务的分配更合理,更能充分发挥性能较好的计算节点的性能优 势,而原有的任务调度方法都没有考虑各计算节点在性能上的动态变化性;( 改变了典 型的分布式计算模型(如MapReduce)中只要计算节点向主控节点申请任务即可获得任务 执行的惯例,而为主控节点赋予了选择计算节点去执行任务的权利,这样就避免了性能较 差的计算节点带来的瓶颈问题。


图1本发明的云计算环境中分布式计算节点的组成结构示意2云环境中基于分布式节点性能和任务执行状况的任务分布式调度流程示意 3本发明包括的三个阶段(初始化、信息更新和任务调度)的交互结构4本发明包括的三个阶段的详细流程5本发明信息更新模块流程示意6本发明任务调度模块流程示意中符号说明如下201-204步骤序号;501-505步骤序号;601-604步骤序号;
具体实施例方式为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体 实施例对本发明再作进一步详细的说明。
本发明所需满足的设备环境条件见图1,云环境中分布式计算节点的组成结构主 要包括一个主控节点(主节点)和多个计算节点(子节点),计算节点既可以是物理机,也 可以是虚拟机,对主控节点透明,节点间通过网络互联。主控节点与计算节点通过远程过程 调用(RPC)方式交互。主控节点主要负责接收计算节点的心跳信息,并加以分析和反馈以 控制任务的调度和执行;其中,节点分析器用于接收和分析计算节点的性能信息,更新节点 状态表,任务分析器用于接收和分析计算节点的任务信息,更新任务状态表。计算节点除了 执行任务以外,还主要负责收集本节点的性能信息和任务执行信息并发送给主控节点;其 中,节点性能监控器负责收集节点最近一段时间的性能信息,任务监控器负责收集节点最 近一段时间执行任务的记录信息。本发明在软件条件方面,要求各节点采用Linux操作系统,安装有Java开发工具 包1.6及以上版本。本发明在环境条件方面,要求各节点能够通过ssh无密码互相访问。基于节点性能和任务执行状况的任务动态调度流程见图2,主要包括两个内容 (1)计算节点收集封装本节点的心跳信息并发送给主控节点,主控节点根据接收到的心跳 信息建立和更新节点状态表和任务状态表;( 主控节点在接收到计算节点的任务请求 后,根据调度算法为计算节点分配任务并更新节点预取表和任务预分表。该方法包括三个阶段初始化、信息更新和任务调度。其交互结构如图3所示。在 初始化阶段,主控节点接收作业,并建立节点状态表和任务状态表;在信息更新阶段,主控 节点接收计算节点的心跳信息并更新节点状态表、任务状态表、节点预取表和任务预分表, 若计算节点请求任务,则进入任务调度阶段;在任务调度阶段,主控节点根据节点信息和任 务信息为计算节点分配任务,结束后返回信息更新阶段等待计算节点的心跳信息。下面以一实例进行说明,如图4所示,本发明所述的方法包括以下步骤步骤401 计算节点上的节点性能监控器收集本节点的性能信息,任务监控器收 集本节点的任务执行信息,再封装成心跳信息,发送给主控节点。信息收集和心跳信息发送 的周期为3秒。步骤402 主控节点接收并分析各计算节点的心跳信息,如果是第一次收到心跳 信息,则创建节点状态表和任务状态表,如果已创建,则每收到一个心跳信息就更新节点状 态表和任务状态表。主控节点根据节点状态表和任务状态表,为计算节点预分配任务,更新 节点预取表和任务预分表。具体如图5的信息更新模块所示。步骤403 计算节点若有空的任务槽(task slot)可用,则在下次的心跳信息中加 入向主控节点请求任务的标志。步骤404 主控节点接收到计算节点的任务请求后,按调度策略为其分配任务。具 体如图6的任务调度模块所示。信息更新模块的详细流程如图5所示,步骤501 主控节点监听计算节点的RPC访问,接收计算节点发送的心跳信息。主 控节点同一时刻只能接收一个计算节点的心跳信息,如果主控节点在接收某个计算节点的 心跳信息时,有其他计算节点也向主控节点发送心跳信息,则主控节点将较晚心跳的计算 节点加入等待队列。计算节点上的节点性能监控器监控并收集本节点最近一段时间内的性 能信息,任务监控器监控本节点上正在执行的任务的信息并收集已执行的最近的3个历史
8任务的记录,计算节点将性能信息和任务信息封装为心跳信息。如果最近一段时间内的任 务信息没有更新,心跳信息中也可以只包含节点的性能信息。计算节点每隔一段时间将心 跳信息通过RPC方式发送给主控节点。心跳周期为3秒。每次心跳时,心跳信息中都应包 含节点的性能信息和当前正在执行的任务的信息,而计算节点每执行完一个任务,都在下 一次心跳时将刚结束的任务的执行记录加入心跳信息发送给主控节点,即任务信息中包含 两类任务信息已完成但未上报的任务信息(可能为空)和正在进行中的任务信息。步骤502 主控节点根据接收到的心跳信息,更新节点状态表和任务状态表。对于 节点状态表,将心跳信息中的计算节点状态信息覆盖主控节点中节点状态表对应于该计算 节点的信息。任务状态表中记录着每个节点上执行的最近3个历史任务的信息和正在进行 中的任务信息,主控节点每次收到新的任务状态信息时,首先看是否有已完成但未上报的 任务信息,如果有,则获得该任务的TaskID并查看该任务在任务状态表中是否已存在,若 存在则更新任务状态表中该任务的信息,否则删除任务状态表中该计算节点的最旧的任务 信息并加入该已完成的任务信息。对于正在进行中的任务信息,获得该任务的TaskID,如果 该任务在任务状态表中已存在,则更新任务状态表中该任务的信息,否则,在任务状态表中 加入该任务的信息。步骤503 根据节点状态表和任务状态表更新节点预取表和任务预分表。对于任 务列表中的第m个任务,根据节点状态表和任务状态表,预测每个节点执行该任务所需的 时间,预测算法如下
权利要求
1.一种云计算环境中分布式计算模式下的任务动态调度方法,通过动态获取并分析任 务的资源需求及节点的性能信息和历史任务执行信息,在满足需求的情况下对任务的分配 进行动态控制,从而提高作业的响应速度和节点的资源使用率,其特征在于该方法包括以 下步骤步骤一计算节点动态收集本节点的性能信息及任务执行信息,以心跳信息的形式报 告给主控节点;主控节点接收并分析各计算节点的心跳信息,生成节点状态表和任务状态 表;步骤二 主控节点根据节点状态表和任务状态表,为计算节点预分配任务,更新节点预 取表和任务预分表;步骤三如果计算节点中有空的任务槽即task slot可用,则在下次的心跳信息中加 入向主控节点请求任务的标志;步骤四主控节点接收到计算节点的任务请求后,按调度策略为其分配任务。
2.根据权利要求1所述的一种云计算环境中分布式计算模式下的任务动态调度方法, 其特征在于步骤一所述的节点性能信息和任务执行信息是主控节点更新节点状态表和任 务状态表的重要数据来源;节点性能信息包括CPU主频、内存大小、CPU使用率、内存使用率 和I/O资源使用率;任务执行信息包括刚结束的任务执行信息和正在进行中的任务执行信 息;刚结束的任务执行信息包括任务的TaskID、所在作业的JobID、用于IO的时间即复制处 理数据和用于CPU计算的时间,其中,复制处理数据发生在该计算节点没有此任务的输入 数据的情况下发生;正在进行中的任务执行信息包括任务的TaskID、所在作业的JobID、任 务的执行进度和已执行时间;每个计算节点每隔一段时间收集本节点的这两种信息,并封 装为心跳信息发送给主控节点。
3.根据权利要求1所述的一种云计算环境中分布式计算模式下的任务动态调度方 法,其特征在于步骤二所述的节点状态表和任务状态表是主控节点制定任务分配方案的 重要参考信息;节点状态表描述了近一段时期内各计算节点的性能状态,任务状态表记录 了各计算节点在近一段时期内处理任务的情况;主控节点第一次接收到计算节点的心跳 信息后,创建节点状态表和任务状态表并在以后每次接收到计算节点的心跳信息后更新 这两个表;节点状态表包括 NodeName、CPU_Speed、MemSize、CPU_Usage、Mem_Usage、I0_ Usage 这些字段;任务状态表包括 JobID、TaskID、NodeName、Time_IO、Time_CPU、Progress、 PastTime这些字段;节点预取表记录了主控节点为计算节点预先分配任务的信息,节点 预取表包括NodeName、preFetched、preFetchedTaskID这些字段;任务预分表记录了 主控节点将任务预先分配给计算节点的信息,任务预分表包括TaskID、preScheduled, preScheduledNodeName这些字段;具体实现过程如下1)主控节点监听计算节点的RPC访问,接收计算节点发送的心跳信息;主控节点同一 时刻只能接收一个计算节点的心跳信息,如果主控节点在接收某个计算节点的心跳信息 时,有其他计算节点也向主控节点发送心跳信息,则主控节点将较晚心跳的计算节点加入 等待队列;计算节点上的节点性能监控器监控并收集本节点最近一段时间内的性能信息, 任务监控器监控本节点上正在执行的任务的信息并收集已执行的最近的3个历史任务的 记录,计算节点将性能信息和任务信息封装为心跳信息;如果最近一段时间内的任务信息 没有更新,心跳信息中也可以只包含节点的性能信息;计算节点每隔一段时间将心跳信息通过RPC方式发送给主控节点;心跳周期为3秒,每次心跳时,心跳信息中都应包含节点的 性能信息和当前正在执行的任务的信息,而计算节点每执行完一个任务,都在下一次心跳 时将刚结束的任务的执行记录加入心跳信息发送给主控节点,即任务信息中包含两类任务 信息已完成但未上报的任务信息和正在进行中的任务信息;2)主控节点根据接收到的心跳信息,更新节点状态表和任务状态表;对于节点状态 表,将心跳信息中的计算节点状态信息覆盖主控节点中节点状态表对应于该计算节点的信 息;任务状态表中记录着每个节点上执行的最近3个历史任务的信息和正在进行中的任务 信息,主控节点每次收到新的任务状态信息时,首先看是否有已完成但未上报的任务信息, 如果有,则获得该任务的TaskID并查看该任务在任务状态表中是否已存在,若存在则更新 任务状态表中该任务的信息,否则删除任务状态表中该计算节点的最旧的任务信息并加入 该已完成的任务信息;对于正在进行中的任务信息,获得该任务的TaskID,如果该任务在 任务状态表中已存在,则更新任务状态表中该任务的信息,否则,在任务状态表中加入该任 务的信息;3)根据节点状态表和任务状态表更新节点预取表和任务预分表。对于任务列表中的 第m个任务,根据节点状态表和任务状态表,预测每个节点执行该任务所需的时间,预测算 法如下_ _, h ( j )其中,Tu为第i个计算节点执行其第Ji个任务所需的预测时间,ts为出现可用任务槽 的时间,ti0为复制数据所需的时间,tcpu为数据处理时间,h为计算节点已经成功执行的任 务的参考数目,η为集群中的计算节点数;获得Tu的值后,主控节点选择最小的一个,向其对应的计算节点预分配任务,并将任 务m标记为已预分,将即将执行该任务的计算节点标记为已预取;接着,主控节点继续在未被标记为已预取的各计算节点中为下一个没有标记为已预分 的任务选择执行它的计算节点,每次只预分num个任务,其中num = 5 ;预分完毕后,任务 队列里可能还有未被标记为已预分的任务,节点列表中也可能会有未被标记为已预取的节点。4)如果计算节点在心跳信息中将请求任务字段标记为真,则进入任务调度模块。
4.根据权利要求1所述的一种云计算环境中分布式计算模式下的任务动态调度方法, 其特征在于步骤三所述的计算节点的任务槽,其大小是指计算节点同一时刻能并行执行 的最大任务数,任务槽的大小在分布式节点集群启动前配置好;计算节点只有在有空的任 务槽的时候才向主控节点申请任务,任务的申请通过心跳信息传递,心跳信息中包含申请 任务的标志位,如果为真则表明该计算节点有空的任务槽,主控节点可以将任务分配给该 计算节点执行。
5.根据权利要求1所述的一种云计算环境中分布式计算模式下的任务动态调度方法, 其特征在于步骤四所述的主控节点为申请任务的计算节点分配任务执行是通过分布式 调度算法决定的;分布式调度算法在主控节点的调度器中实现,同一时刻可能有多个计算 节点同时申请任务执行,调度器通过读取节点状态表、任务状态表、节点预取表和任务预分表,并结合剩余任务队列,根据分布式调度算法确定为计算节点分配任务的优先次序及任 务个数,然后更新节点预取表和任务预分表;具体实现过程如下1)主控节点首先通过查找节点预取表判断是否已为该节点预先分配任务,如果已预先 分配,则为该节点分配已预分的任务,并标记该任务已分配,标记该节点为未预取;2)如果主控节点没有为该节点预先分配任务,根据步骤二中所述的预测算法公式 (1),未被标记为已预取的节点是性能较差或计算能力较弱的节点,则从任务队列中选取一 个任务给该节点执行,但是并不将该任务标记为已分配,待下次预分时,该任务将被预分给 处理速度较快的节点,因而该任务将有一个备份任务在快节点上执行以保证其顺利执行;3)为计算节点分配任务结束后,主控节点更新节点预取表和任务预分表;4)任务调度阶段结束,转入信息更新阶段,主控节点继续接收并处理计算节点发送过 来的心跳信息。
全文摘要
一种云计算环境中分布式计算模式下的任务动态调度方法,该方法有四大步骤步骤一、主节点接收子节点的心跳信息并加以分析;步骤二、主节点根据节点状态表和任务状态表预分配任务;步骤三、子节点向主节点索取任务;步骤四、主节点为子节点分配任务。本发明首先考虑任务的资源需求及节点的性能信息,在满足需求的情况下对任务的分配进行动态控制,从而提高作业的响应速度和节点的资源使用率。它在云计算环境下的分布式计算技术领域里具有广泛地实用价值和应用前景。
文档编号G06F9/50GK102073546SQ20101058359
公开日2011年5月25日 申请日期2010年12月13日 优先权日2010年12月13日
发明者毛宏, 祝明发, 肖利民, 胡声秋, 阮利 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1