面向分布式编程框架的资源管理系统的制作方法

文档序号:6374034阅读:122来源:国知局

专利名称::面向分布式编程框架的资源管理系统的制作方法
技术领域
:本发明涉及计算机领域,尤其涉及一种面向分布式编程框架的资源管理系统。
背景技术
:并行计算依赖于大规模的集群,并行计算的火热推动了集群管理系统的发展,面向并行计算的集群管理系统开始出现,比如LSF(LoadSharingFacility,负载共享设施)系统、PBS(ProtableBatchSystem,可移植批处理作业系统)系统等。这些系统都是面向并行计算,处理传统的批处理作业,管理集群资源,广泛应用于工业生产和科研环境中。随着分布式计算的兴起,各种新型并行编程框架的不断涌现,传统的集群管理系统因其本身系统设计与结构等方面的原因,无法良好的支持新型编程框架,更无法支持多编程框架共存于集群中的资源管理问题。面向多编程框架的集群资源管理是最近才出现的研究课题。下面列举3个有代表性的可支持多编程框架的集群资源管理系统I)计算密集型批处理作业管理系统CondorCondor是威斯康辛大学开发的处理计算密集型作业的批处理系统。它的架构为典型的主-从(master-slave)结构,Condor的master主要由收集器(collector)和导航器(negotiator)组成,开启器(startd)是每个执行机器上都有的守护进程,相当于从部分,开启器负责启动任务,并定时上报机器的资源信息给收集器。开启器是每个提交作业的机器上都存在的调度器进程,负责接收用户作业,将任务匹配请求发送给收集器。导航器完成作业资源请求与机器的匹配工作,从而将作业分发给合适的机器,由开启器启动任务。对于编程框架的支持,Condor实现了一套管理_工作者(master-worker)结构的框架,简称为MW框架。MW框架提供了一些基类,通过继承这三个基类,用户可以编写自己的框架。Condor支持编程框架的本质是提供了一套开发编程框架的API(ApplicationProgrammingInterface,应用程序编程接口),用户通过这套API可以开发出一个编程框架,因此Condor要支持已有的编程框架非常麻烦。资源虚拟化方面,Condor本身并没有对任何的资源虚拟化方案管理资源,因此多个框架之间会产生资源竞争,互相影响。总体而言,Condor在兼容现有的编程框架上存在困难,并且没有提供任何虚拟化的技术,使得多编程框架共享集群存在困难。2)动态资源管理系统MesosMesos是Berkeley大学实现的数据中心资源共享管理平台,负责为上层计算框架分配资源。Mesos的本质思想是集群复用。相比于传统的资源管理系统,Mesos从不同的资源视角对集群资源管理进行了抽象。Mesos通过与框架的调度器的通信完成资源分配的交互。编程框架要运行于Mesos之上,必须要在编程框架的主部分中增加与Mesos的交互模块。Mesos提供了一套资源-提供(resource-offer)机制与编程框架的master交互。编程框架的主部分在基于资源-提供机制提供的API接收或者拒绝Mesos推送的资源,包括CPU和内存。因此对编程框架而言,需要进行大量的内部逻辑修改,对编程框架使用人员而言成本太高,大大降低了Mesos使用的灵活性。资源虚拟化方面,Mesos使用了操作系统级别虚拟化工具容器(LinuxContainer),管理CPU和内存两种资源,在保证编程框架性能的同时,也保证了编程框架之间的资源隔离,效果良好。在资源利用率方面,Mesos将空闲资源迅速回收,并通过资源-提供机制将空闲资源实时推送给编程框架,编程框架根据自身机制选择是否接受,通过这种方式能有效提高集群资源利用率。Mesos在资源虚拟化方面和提升资源利用率方面的表现很好,其缺点在于兼容现有的编程框架比较繁琐,兼容性不足。3)Hadoop-YarnHadoopO.23对Hadoop的架构进行了重大的革新。HadoopO.23将编程框架与运行时框架解耦,分离出MapReduce编程框架和资源管理系统,新一代的架构称为Yarn。Yarn采用主从架构,资源管理器(ResourceManager)是主部分,节点管理器(NodeManager)是其从部分。资源管理器负责调度分发资源请求,节点管理器负责启动任务。在Yarn中有两种运行实体,一种是程序管理器(AppMaster),一种是容器(Container)。程序管理器是应用程序的主部分,比如MapReduce的主部分,而容器是程序管理器向资源管理器申请资源获得匹配后启动的程序,比如MapReduce的工作者(worker)。通过Yarn的架构,可以在Yarn上运行多种编程框架,比如MapReduce,DAG等等。Yarn提供了一套API,用户可以通过该API构建新的编程框架,也可以修改已有的编程框架,在其代码中加入与Yarn交互的资源管理模块。资源管理方面,节点管理器将运行任务的资源使用情况上报给资源管理器,资源管理器对其进行管理。Yarn目前仅对内存进行了管理,当某个程序的内存超出规定的额度时出触发相应的动作,比如杀死该任务。通过上述的描述可以发现,Yarn在兼容性上存在与Mesos—样的问题,要么重新编写编程框架,要么对已有的编程框架进行修改,以适配Yarn。资源虚拟化方面,Yarn使用JVM高级语言虚拟化来隔离资源,隔离性不高,另外,管理的资源目前仅包括内存,并没有对CPU和输入输出带宽资源的管理。总体而言,Yarn在兼容现有的编程框架上存在困难,在资源虚拟化方面稍显不足,资源利用率也相对较低。综上所述,目前的集群资源管理系统存在如下问题对数据处理编程框架支持困难,兼容性差;多编程框架共存集群中资源利用率不高,数据共享困难;资源竞争导致共存的编程框架效率不高。
发明内容本发明所要解决的技术问题是提供一种面向分布式编程框架的资源管理系统,具有良好的兼容性,方便用户使用。为解决上述技术问题,本发明提出了一种面向分布式编程框架的资源管理系统,包括主部分和从部分,其中所述从部分,用于启动编程框架执行器,监控编程框架执行器的运行状态,向所述主部分的调度器上报编程框架执行器的运行状态,向所述主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息;所述主部分包括收集器,用于接收并保存所述从部分的资源使用信息和所述从部分上编程框架执行器的资源使用信息,保存集群资源信息;所述收集器中包括监控器,用于监控所述从部分上编程框架执行器的资源使用信息,并根据编程框架定制的资源调整决策触发器向调度器发送为编程框架增加或减少资源的任务;调度器,用于调度、下发和控制所述监控器发送的为编程框架增加或减少资源的任务。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述调度器中包括关键资源匹配模块,用于根据关键资源匹配算法选择匹配机器,所述关键资源匹配算法为计算一台机器中每种资源的需求-可用比,所述需求-可用比为资源的需求与可用的比例,用需求-可用比最高的资源的需求-可用比作为该机器的关键资源比例,从集群中选出关键资源比例最高的机器作为匹配机器;容器创建模块,用于在所述关键资源匹配模块选择的匹配机器上执行资源增加任务创建容器;资源分配模块,用于将所述容器创建模块所创建的容器的资源分配给提出资源要求的编程框架。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述容器为Linux容器。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述决策触发器包括过载触发器,一个编程框架对应一个过载触发器,过载触发器判断编程框架是否处于高负载状态,若是则提出为编程框架增加资源的要求,所述高负载状态是指一个编程框架的所有执行器在过载触发器周期内的平均CPU利用率大于设定的CPU利用率阈值的情况。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述过载触发器周期为60秒。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述决策触发器包括空闲触发器,一个执行器对应一个空闲触发器,空闲触发器判断执行器当前是否处于空闲状态,若是则关闭该执行器,并回收该执行器的资源,所述空闲状态是指在空闲触发器周期内,执行器的子进程数目小于设定的数目阈值的情况。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述空闲触发器周期为5分钟。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述从部分的资源使用信息包括从部分总的CPU个数、从部分总的内存大小、从部分当前的可用CPU个数、从部分当前的可用内存大小和从部分当前的CPU利用率。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述编程框架的资源使用信息包括编程框架当前占用的CPU利用率、编程框架占用的内存大小和编程框架当前的子进程数目。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述分布式编程框架包括Hadoop编程框架、消息传递接口MPI编程框架。进一步地,上述面向分布式编程框架的资源管理系统还可具有以下特点,所述从部分通过向所述主部分发送心跳信息来向所述主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息,所述从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息包含在所述心跳信息中。本发明的面向分布式编程框架的资源管理系统对分布式编程框架是透明的,任何分布式编程框架(如Hadoop、MPI等)不经过任何修就可以运行于本发明的面向分布式编程框架的资源管理系统之上,从而使得多种编程框架能够运行在一个集群上,共享数据与集群资源,具有良好的兼容性与灵活性。并且,本发明的面向分布式编程框架的资源管理系统保证多个编程框架之间使用的资源(CPU、内存等)相互隔离、互不干扰,同时保证各个编程框架的性能。图I为本发明面向分布式编程框架的资源管理系统的总体架构图;图2为本发明实施例中面向分布式编程框架的资源管理系统的一种具体结构图;图3为本发明面向分布式编程框架的资源管理系统中主部分与从部分之间交互资源信息的示意图;图4为一个集群的常态的资源视图;图5为本发明中监控机制的示意图。具体实施例方式以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。本文中提到的机器是指集群中的计算机。图I为本发明面向分布式编程框架的资源管理系统的总体架构图。本发明面向分布式编程框架的资源管理系统是一种主从式(master-slave)管理架构。如图I所示,本发明的面向分布式编程框架的资源管理系统包括主部分(master)和从部分(slave)。其中,从部分用于启动编程框架执行器,监控编程框架执行器的运行状态,向主部分的调度器上报编程框架执行器的运行状态,以及向主部分报告该从部分的资源使用信息和该从部分上编程框架执行器(executor)的资源使用信息。具体地,从部分可以通过向主部分发送心跳信息来向主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息,从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息包含在心跳信息中。主部分用于通过实时监控编程框架的资源使用情况为编程框架自动伸缩资源。除了发送心跳信息外,从部分也可以通过其它途径向主部分上报资源使用信息,此处不再一一列举。编程框架对于本发明的面向分布式编程框架的资源管理系统而言是黑盒,本发明的面向分布式编程框架的资源管理系统并不管理执行器的内部行为(比如其内部任务(task)的运行等),只能获取编程框架的资源使用情况,比如当前使用的CPU,当前使用的内存大小,以及当前使用的输入输出带宽资源,通过这些资源使用信息获取当前编程框架的负载,从而根据负载为编程框架动态伸缩资源。本发明的面向分布式编程框架的资源管理系统对编程框架而言是透明的,编程框架主部分与编程框架执行器之间的交互不做任何改变。本发明中的编程框架可以是所有面向数据处理的编程框架。其中,分布式编程框架可以包括Hadoop、MPI(消息传递接口,MessagePassingInterface)等。其中,编程框架的资源使用信息可以包括编程框架当前占用的CPU利用率、编程框架占用的内存大小、编程框架当前的子进程数目等。图2为本发明实施例中面向分布式编程框架的资源管理系统的一种具体结构图。如图2所示,主部分包括收集器(collector)和调度器(scheduler),收集器中包含监控器(monitor)。其中,收集器用于接收并保存从部分的资源使用信息和从部分上编程框架执行器(executor)的资源使用信息,保存集群资源信息。监控器保存有每个编程框架的所有执行器的资源使用信息(该资源使用信息是由收集器发送给监控器的)。监控器用于监控从部分上编程框架执行器(executor)的资源使用信息,并根据编程框架定制的资源调整决策触发器向调度器发送为编程框架增加(Submit)或减少(Delete)资源的任务。监控器根据每个编程框架定制的资源决策机制决定是否触发反馈机制(feedback),一旦反馈机制被触发,监控器就向调度器发送增加资源的命令或减少资源的命令。调度器用于调度、下发和控制监控器发送的为编程框架增加或减少资源的任务。如图2所示,当接收到增加资源的任务之后,调度器就对这个任务进行调度,将该任务的资源需求通过匹配(Match)命令发送给收集器匹配,收集器保存有当前集群最新的资源信息,收集器会选择一个合适的机器返回给调度器,调度器立即将这个任务下发到该机器上。从部分还用于启动各个编程框架的执行器。对Hadoop而言,它的执行器就是任务跟踪器(tasktracker)。从部分负责启动这些执行器,监控它们的状态,并将这些信息及机器目前的资源使用情况通过心跳信息上报给主部分。如图2所示,当接收到调度器的启动任务命令后,从部分就派生(fork)—个进程启动该任务,从部分将任务的状态实时上报给调度器,比如任务启动成功、任务结束等。同时从部分保持与收集器的心跳,并通过心跳,将机器当前的资源情况和正在运行的执行器的资源使用情况上报给收集器。例如图2中示出的Hadoop执行器占用的内存为40M,当前占用的CPU利用率为50%,当前的任务数目为3个。图2中,工具(tools)是指本发明面向分布式编程框架的资源管理系统的客户端工具,用户可以通过命令行工具向本发明面向分布式编程框架的资源管理系统挂载或者移除编程框架。在用程序实现主部分时,收集器和调度器可以看作是主部分的程序中的两个进程。监控器是收集器内部的一个线程,并不是一个进程,线程之间传递消息的速度相比于进程更快。将主部分的程序拆成收集器和调度器两个进程会提高系统的可扩展性,容纳更多的机器,因为调度器只负责资源分配与调度工作,收集器只负责资源收集和监控工作,这种完全松耦合的设计可以提高进程的可靠性和稳定性,从而提高系统的扩展性。主部分程序和从部分程序一般运行于不同的机器上面,但是也可以部署在同一个机器上,这种情况下这个机器就有两个角色,既是主部分又是从部分。图3为本发明面向分布式编程框架的资源管理系统中主部分与从部分之间交互资源信息的示意图。图3中,示出了3个从部分,分别为第一从部分、第二从部分和第三从部分。其中,第一从部分有两个执行器,即Hadoop执行器和MPI执行器,第二从部分有一个Hadoop执行器,第三从部分有一个MPI执行器。第一从部分、第二从部分和第三从部分分别将编程框架执行器的资源使用信息上报给主部分。第一从部分上报的内容是=MPI执行器占用的内存为100M,当前占用的CPU利用率为80%,当前的任务(也即子进程)数目为I个;Had00p执行器占用的内存为100M,当前占用的CPU利用率为50%,当前的任务数目为3个。第二从部分上报的内容是Hadoop执行器占用的内存为100M,当前占用的CPU利用率为50%,当前的任务数目为3个。第三从部分上报的内容是MPI执行器占用的内存为100M,当前占用的CPU利用率为80%,当前的任务数目为I个。由上可见,本发明的面向分布式编程框架的资源管理系统的主部分和从部分之间利用资源自动伸缩机制,通过实时监控编程框架的资源使用情况为编程框架自动伸缩资源,使得编程框架不需要做任何修改就能接入,极大地减轻了编程框架开发人员的负担,具有良好的兼容性,方便用户使用。本发明的面向分布式编程框架的资源管理系统中,主部分的调度器可以进一步包括关键资源匹配模块、容器创建模块和资源分配模块。关键资源匹配模块用于根据关键资源匹配算法(又称为基于关键资源的最优匹配算法或者DRBF算法)选择匹配机器。容器创建模块用于在关键资源匹配模块选择的匹配机器上执行资源增加任务创建容器(Container)。资源分配模块用于将容器创建模块所创建的容器的资源分配给提出资源要求的编程框架。其中,关键资源匹配算法为计算一台机器中每种资源的需求-可用比,需求-可用比为资源的需求与可用的比例,用需求-可用比最高的资源的需求-可用比作为该机器的关键资源比例,从集群中选出关键资源比例最高的机器作为匹配机器。关键资源匹配算法的描述见表2。该关键资源匹配算法可以减少集群内的资源碎片,提升系统吞吐量,提升集群的资源利用率。表2关键资源匹配算法伪代码描述7将集群中所有机器放置于集合S中,资源需求为P-2:while(S非空){3从S中取出一台机器M,_权利要求1.一种面向分布式编程框架的资源管理系统,其特征在于,包括主部分和从部分,其中所述从部分,用于启动编程框架执行器,监控编程框架执行器的运行状态,向所述主部分的调度器上报编程框架执行器的运行状态,向所述主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息;所述主部分包括收集器,用于接收并保存所述从部分的资源使用信息和所述从部分上编程框架执行器的资源使用信息,保存集群资源信息;所述收集器中包括监控器,用于监控所述从部分上编程框架执行器的资源使用信息,并根据编程框架定制的资源调整决策触发器向调度器发送为编程框架增加或减少资源的任务;调度器,用于调度、下发和控制所述监控器发送的为编程框架增加或减少资源的任务。2.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述调度器中包括关键资源匹配模块,用于根据关键资源匹配算法选择匹配机器,所述关键资源匹配算法为计算一台机器中每种资源的需求-可用比,所述需求-可用比为资源的需求与可用的比例,用需求-可用比最高的资源的需求-可用比作为该机器的关键资源比例,从集群中选出关键资源比例最高的机器作为匹配机器;容器创建模块,用于在所述关键资源匹配模块选择的匹配机器上执行资源增加任务创建容器;资源分配模块,用于将所述容器创建模块所创建的容器的资源分配给提出资源要求的编程框架。3.根据权利要求2所述的面向分布式编程框架的资源管理系统,其特征在于,所述容器为Linux容器。4.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述决策触发器包括过载触发器,一个编程框架对应一个过载触发器,过载触发器判断编程框架是否处于高负载状态,若是则提出为编程框架增加资源的要求,所述高负载状态是指一个编程框架的所有执行器在过载触发器周期内的平均CPU利用率大于设定的CPU利用率阈值的情况。5.根据权利要求4所述的面向分布式编程框架的资源管理系统,其特征在于,所述过载触发器周期为60秒。6.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述决策触发器包括空闲触发器,一个执行器对应一个空闲触发器,空闲触发器判断执行器当前是否处于空闲状态,若是则关闭该执行器,并回收该执行器的资源,所述空闲状态是指在空闲触发器周期内,执行器的子进程数目小于设定的数目阈值的情况。7.根据权利要求6所述的面向分布式编程框架的资源管理系统,其特征在于,所述空闲触发器周期为5分钟。8.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述从部分的资源使用信息包括从部分总的CPU个数、从部分总的内存大小、从部分当前的可用CPU个数、从部分当前的可用内存大小和从部分当前的CPU利用率。9.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述编程框架的资源使用信息包括编程框架当前占用的CPU利用率、编程框架占用的内存大小和编程框架当前的子进程数目。10.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述分布式编程框架包括Hadoop编程框架、消息传递接口MPI编程框架。11.根据权利要求I所述的面向分布式编程框架的资源管理系统,其特征在于,所述从部分通过向所述主部分发送心跳信息来向所述主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息,所述从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息包含在所述心跳信息中。全文摘要本发明涉及一种面向分布式编程框架的资源管理系统。该面向分布式编程框架的资源管理系统包括主部分和从部分,从部分用于启动编程框架执行器,监控编程框架执行器的运行状态,向主部分报告该从部分的资源使用信息和该从部分上编程框架执行器的资源使用信息;主部分包括收集器,用于接收并保存从部分的资源使用信息和从部分上编程框架执行器的资源使用信息,保存集群资源信息,收集器中包括监控器,用于监控从部分上编程框架执行器的资源使用信息,根据编程框架定制的资源调整决策触发器向调度器发送为编程框架增加或减少资源的任务;调度器,用于调度、下发和控制监控器发送的任务。本发明具有良好的兼容性与灵活性。文档编号G06F9/50GK102866918SQ20121026288公开日2013年1月9日申请日期2012年7月26日优先权日2012年7月26日发明者张章,陈竞,韩冀中,戴娇,孟丹申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1