1相关工作
LSF具有高可用性以及强大的资源管理功能,但由于是商业软件,价格昂贵.PBS[5](PortableBatchSystem)是集群计算环境下出现较早的作业管理系统,主要特点有代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业等.PBS本身主要用在单集群系统作业管理,但也提供了有限的多集群之间的作业转发机制,但是这种作业转发所基于的调度不够灵活[6,7].MUSCL[8]是一个由英国Warwick开发的多集群任务负载管理系统,它提供了两级调度模式,基于Qos需求的动态调度算法指导作业调度.MUSCL可以尽可能比较紧凑的在一个集群上调度作业,使用启发式算法在集群间调度,但它对任务的类型有严格限制.
2多集群作业管理功能分析
多集群作业管理在调度时首先依据全局资源状态选择某个或某些合适的集群,称为全局调度.然后作业被分配到本地某个具体的集群,按照本地的资源管理器进行作业调度,称为本地调度.作业进入本地调度阶段后,按照本地原有的队列和调度规则进行资源分配,最终在集群各CPU上执行.多集群作业管理的主要功能包括:用户与权限管理、资源信息监控、作业全局调度与管理、数据传输与管理.(1)用户与权限管理模块多集群作业管理系统是运行在本地HPC集群作业管理系统之上的,本地HPC集群必然有自己的用户系统,而多集群作业管理平台也有自己的用户系统,必须在两个用户系统间设计一种用户映射的方式,同时还要设计权限控制机制.(2)资源信息监控模块资源信息监控管理师作业全局调度的基础,全局调度系统在做出决策之前,必须要事先知晓各个本地集群的CPU负载和内存占用比例等状态信息.因此,需要设计全局的资源监控系统,负责管理和维护系统中各个集群负载的情况,为作业管理调度决策提供支持.(3)全局作业调度与管理模块多集群调度的基本目标是协调和平衡集群间的工作负载.需要设计全局的作业管理和调度器,作业调度器根据各个集群机身负载信息作出调度决策,调度用户作业到相应的本地集群,并提交给本地集群作业管理系统.同时还要为用户设计作业状态的订阅及通知机制.(4)数据传输与管理模块由于用户作业可能被调度到任意地理位置上的集群上运行,因此,作业输入参数和计算结果需要能够在整个系统中透明的传输.同时,还要为用户提供输入参数上传和计算结果下载功能.在设计机制实现透明传输文件的同时,还必须保证该文件传输的可靠性和稳定性.
3多集群作业管理设计思路与技术方案
3.1消息中间件JMS采用JMS[9,10](JavaMessageservice)消息中间件来进行全局作业的调度和统一管理.JMS的消息模型和通信特点在网络很不稳定的情况下也能保证稳定性和可靠性,并且JMS强大的接口能力可以方便灵活的进行定制,方便根据用户作业的资源需求及各个集群自身负载情况进行统一管理和调度.4.1.1JMS特点及基本组成JMS可使分布式系统的通信松散连接,即发送信息的客户端只需要负责发送信息,接收信息的客户端接收信息,两个客户端之间没有必要是同时可用的,甚至发送客户端都没有必要知道接收客户端的信息,只需要发送到接收信息的服务端.同时JMS还具有以下两个特征:1)异步的,服务端可以发送信息到一个客户端,客户端不需要为了收到信息而请求信息.2)可靠的,JMSAPI保证了服务端所有发送的信息最少发送一次和只发送一次.JMS由提供者、客户、生产者、消费者、消息、队列、主题七个部分组成.其中,提供者指JMS的实现,可以认为是JMS消息服务器.JMS客户指生产或消费消息的基于Java的应用程序或对象.JMS生产者是指创建并发送消息的JMS客户.而JMS消费者则是接收消息的JMS客户.消息指可以在JMS客户之间传递的数据的对象.另外,JMS队列指一个容纳那些被发送的等待阅读的消息的区域,这些消息将按照顺序发送.一旦一个消息被阅读,该消息将被从队列中移走.JMS主题指一种支持发送消息给多个订阅者的机制.4.1.2JMS的通信方式Java消息服务应用程序结构支持两种模型:点对点或队列模型、发布/订阅模型.1)在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息.在这种模式下,只有一个消费者将最终获得消息.同时,生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态.2)发布者/订阅者模型支持向一个特定的消息主题发布消息.该模型如图2所示,对某个消息主题感兴趣的订阅者可以订阅并得到该主题的所有息.同时,在发布者和订阅者之间存在时间依赖性.发布者需要建立一个订阅(subscription),以便客户能够购订阅.订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅.在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布.3.2本地集群作业管理PBS、LSF是已有常用的单个集群作业管理系统,采用多种本地集群作业管理系统,在减少设计复杂度的同时,还可以充分满足不同本地集群管理多样性的需求.PBS的主要特点有:代码开放;免费获取;提供完整的API.LSF特点是拥有强大的可用性和资源管理功能.3.3基于FTP的文件集中统一管理方案由于多集群可能在地理位置上是分散的,而集群之间互联的网络基础设施是不可靠和不稳定的.而用户需要透明的上传输入参数并下载计算结果,而不需要关心它的输入参数在哪个地方进行计算,以及需要到哪个地方去下载计算结果.FTP技术是比较成熟和常用的文件传输协议之一,本文采用基于FTP文件传输的集中统一管理方案.使用FTP进行文件传输,客户和服务器建立连接前要经过一个“三次握手”的过程,客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证.它允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信.集中的文件统一管理方案可设置集中式FTP服务器,浏览器端提交的输入参数将传输给该FTP服务器,本地集群代理程序从消息服务器中获取到相应主题作业消息,解析作业消息,得到用户输入参数,到该FTP服务器下载相应输入参数到本地集群.本地集群代理程序查询到作业计算完成以后,将计算结果上传到该FTP服务器中,并把计算结果相关信息组装成消息发送到消息服务器,全局作业管理器获取到该消息,解析消息后就可以得到计算结果相关信息,此时计算结果已经在FTP服务器上,用户可以直接下载.
4多集群作业管理框架与设计实现
4.1多集群作业管理方案框架图3是本文采用的基于消息模型的多集群作业管理框架图.在图3中,浏览器负责接收用户提交的作业描述、输入文件上传、作业状态查询、计算结果下载等功能.全局作业管理器是整个系统的核心,主要负责集中管理所有的作业,维护全局的集群系统资源负载信息,并作出相应决策,调度作业到相应的集群上运行,同时实时监控作业状态,给用户提供作业状态查询,负责透明地将输入文件传递到相应集群,计算完成以后,再透明的将计算结果传回并透明的提供给用户下载.消息服务器主要负责缓存全局作业管理器调度给各个集群的作业信息,以及各个集群返回的作业状态信息.而各个集群的本地代理程序负责从消息服务器接收作业消息,并把消息解析成作业提交给本地作业提交系统,同时还负责定期查询本地作业管理系统该作业的状态,给消息服务器发送作业状态信息,同时在本地计算完成以后,回传计算结果.4.2多集群作业管理方案设计实现从框架图中可以看出,该系统由六部分组成,包括作业调度模块、资源监控模块、作业控制模块、作业状态管理模块、消息服务器模块、本地集群代理程序模块.4.2.1消息设计这个系统中的消息分四类,第一类是作业消息,第二类是作业状态消息,第三类是资源状态消息,最后一类是作业控制消息.作业消息包括作业的ID、作业脚本、作业用户名称、需求的资源、输入文件名称等.作业状态消息即作业的状态信息,主要包括作业ID、作业状态、作业提交时间、运行时间、完成时间等.资源状态消息包括本地集群自身的ID、CPU计算能力、内存大小等静态信息,以及CPU利用率、主机负载等动态信息,还包括目标系统启动时间等信息.作业控制消息包括作业ID、作业用户名称、作业控制命令等.4.2.2消息服务器设计采用的是JMS中发布-订阅消息服务模型作为消息服务器,类似于群发邮件的模式.消息生产者将消息发送给消息服务器,并设定一个主题,消息的消费者可以订阅其中的一个或者多个主题,并取走相应的消息.针对某个主题的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且还可以利用JMS的持久化的订阅,这样,即使订阅者没有被激活,它也能接收到发布者的消息.这样就保证了在基础设施网络不稳定的情况下,消息也不会被扔掉,保证了系统的可靠性和稳定性.消息服务器中消息主题的设计主要按本地集群编号和消息本身类型设计,及如果有n套本地集群,那么消息主题总数量为4*n.消息服务器中消息主题设计如表1所示.4.2.3多集群系统资源监控设计本地资源监控是多集群作业调度管理的基础,能为错误检测、资源优化配置、和作业调度等提供重要的依据和参考.然而,不同本地监控系统存在着不兼容的描述或者含糊的定义,可能导致最终监控信息不准确[11,12].因此需要设计一种资源信息公共的表示方法,使得原有集群的监控信息转换成规范格式,形成一致的数据提供者.多集群系统资源监控的核心工作是本地监控信息数据采集转换及信息组织.统一规范的集群监控信息包括本地集群自身ID,CPU频率等静态信息,以及CPU利用率,内存占用率等动态信息.本地集群代理程序是守护进程,会定期向本地集群发送监控查询请求,并将返回的监控结果转换成我们设计的统一规范的监控信息,组装成消息,发送给消息服务器.其基本算法流程描述如下:1)启动本地监控系统.2)本地守护进程从本地监控系统发送监控查询请求.3)本地守护进程获得返回结果以后,解析返回结果,组装成设计好的统一规范的监控信息格式.4)本地守护进程将该实时监控信息发送给消息服务器.5)代理程序睡眠一段时间,醒来后返回第二步.当全局作业管理器发现消息服务器中相应主题有新消息达到,将自动获取该消息,并添加到全局资源监控数据结构中.4.2.4多集群作业调度模块设计多集群的作业调度器采用基于全局-本地的两级调度机制,即全局调度和本地调度[13,14].每级调度都由相应的队列和调度器完成,局部调度由本地资源管理器提供,因此本文主要关注全局调度.实现全局调度的基本手段是定义若干全局的作业队列,包括就绪队列、运行队列、完成队列.这些全局作业队列由全局调度器管理.作业最终经过全局调度-本地调度-CPU调度,形成了不同层次的调度.作业调度的流程设计描述如下:(1)接收浏览器端用户提交的作业请求描述和调度说明,组装成作业对象,加入到就绪队列之中.(2)通过监控信息系统得到系统运行状态,提供资源的使用状况及所运行作业的状态查询功能.(3)分析作业请求描述及调度说明,匹配可用资源,得到候选资源集合.(4)根据调度策略调度算法实现作业到特定集群资源的匹配,将作业转发到消息服务器上,同时作业从就绪队列中出队,加入到运行队列中.(5)相应的本地守护进程从消息服务器取出作业请求描述消息,提交给本地作业调度器,并最终将作业分配到具体的处理机上运行.4.2.5作业控制及状态管理模块设计作业控制、作业状态管理也是作业管理的重要组成部分.作业控制消息发送到消息服务器,相应的本地集群代理程序获取到该控制消息,并提交本地作业管理软件.本地集群代理程序定期向本地作业管理软件发送作业状态查询请求,如果发现作业状态发生改变,将状态消息发送到消息服务器,全局作业管理器获取到该消息,解析该消息,将相应作业从运行队列中取出,加入到完成队列.
5结束语
本文结合中国教育科研网格材料高性能计算服务门户系统项目建设背景,就如何整合不同时期、不同地域建设的高性能计算集群,提高各计算集群资源利用率,使用户可以通过平台提供的统一平台访问和使用这些高性能计算资源展开讨论.设计并实现了一种采用消息模型的多集群作业管理方案.该方案可以根据用户作业的资源需求及各个集群自身负载情况进行统一管理和调度.作者本人基于这个原理设计并实现了该原型系统.采用该方案设计实现的多集群任务管理系统性能稳定,能实现多集群资源监控、资源管理、作业调度、作业控制、数据管理等功能.跨集群作业管理实现了不同集群利用率均衡的同时,有效解决了在资源异构及网络环境不可靠条件下的系统稳定性问题,显著提高了多集群系统作业吞吐能力.
作者:凌东 谷建华 单位:西北工业大学计算机学院 西北工业大学高性能计算中心