一种面向超算集群调度的通用作业收集方法及中间件与流程

文档序号:32482483发布日期:2022-12-09 23:30阅读:35来源:国知局
一种面向超算集群调度的通用作业收集方法及中间件与流程

1.本发明属于集群调度技术领域,尤其涉及一种面向超算集群调度的通用作业收集方法及中间件。


背景技术:

2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.当前,各超算集群调度未能形成统一的规范,市面上存在多个调度系统,例如slurm、pbs、lsf等多个开源调度系统;以上调度系统面向不同领域、不同产品,都会自己设计相应的作业查询接口,或者持久化存储方式,因此各调度系统的数据结构不一致、存储的形式不一致,而且采用异地存储。
4.对于用户以及超算管理人员来说,想查询不同调度系统的个人作业非常繁琐,需要登录不同的调度平台或者系统查询;甚至有些调度系统不会提供相应的接口,或者只支持单一的命令行方式查询作业,这无异增加了用户的学习成本以及超算集群管理人员运维成本;另一方面,异地式的数据存储,难以进行一系列的业务统计。
5.即使是同一超算集群调度系统,随着版本的更迭以及bug的修复,不同版本之间也可能存在不兼容性;例如已知slurm调度系统,从20版本开始支持api接口,如果集群运行的是slurm20之前的版本,只能通过命令行的方式获取作业信息;超算集群用户及管理人员难以从宏观上把握作业信息,不仅给用户增加使用难度,而且还会增加运维成本。因此,对灵活可配置的中心化作业收集的需求十分迫切,需要一种完善、高效的作业信息收集方案。


技术实现要素:

6.为克服上述现有技术的不足,本发明提供了一种面向超算集群调度的通用作业收集方法及中间件,采用部分策略模式、适配器模式的思想,遵守编码的五大设计原则(单一职责原则、开闭原则、里氏替换原则、接口分离原则、依赖反转原则),以一种非侵入性、可拔插的形式,在不修改slurm或其他调度系统本身代码的前提下,保证旧有集群的稳定性、健壮性,完善或者解决不同调度系统数据接口不兼容的问题以及同一调度系统不同版本数据接口不兼容的问题。
7.为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:
8.本发明第一方面提供了一种面向超算集群调度的通用作业收集方法;
9.一种面向超算集群调度的通用作业收集方法,包括:
10.采用主动收集和被动收集两种模式获取各个超算集群调度系统的作业信息;
11.对获取的作业信息进行解析,生成结构化数据;
12.将生成的结构化数据存储在不同的用户介质中。
13.进一步的,采用部分策略模式+适配器模式,面向接口编程,为不同超算集群调度系统定义各自的收集器,获取各个超算集群调度系统的作业信息时,适配不同的收集器进
行作业信息收集。
14.进一步的,所述主动收集,通过监控调度系统作业变化的监控器,将发生变化的作业信息主动推送到收集器中。
15.进一步的,所述被动收集,通过定时器设置定时任务的方式,收集各个超算集群调度系统的作业信息。
16.进一步的,获取的作业信息,包括结构化数据和非机构化数据。
17.进一步的,对获取的作业信息进行解析,是将非结构化数据,解析成符合存储器进行存储和更新的结构化数据。
18.进一步的,所述用户介质,包括搜索引擎、数据库、文件。
19.本发明第二方面提供了一种面向超算集群调度的通用作业收集中间件。
20.一种面向超算集群调度的通用作业收集中间件,包括收集器、解析器和存储器;
21.收集器,被配置为:采用主动收集和被动收集两种模式获取各个超算集群调度系统的作业信息;
22.解析器,被配置为:对获取的作业信息进行解析,生成结构化数据;
23.存储器,被配置为:将生成的结构化数据存储在不同的用户介质中。
24.进一步的,以一种非侵入性、可拔插的形式来实现。
25.进一步的,还包括扩展器,需二次开发时,只需要实现扩展器中的通用接口,并将其注入中间件中。
26.以上一个或多个技术方案存在以下有益效果:
27.本发明提供了一种面向超算集群调度的通用作业收集方法及中间件,采用部分策略模式、适配器模式的思想,遵守编码的五大设计原则(单一职责原则、开闭原则、里氏替换原则、接口分离原则、依赖反转原则),以一种非侵入性、可拔插的形式,在不修改slurm或其他调度系统本身代码的前提下,保证旧有集群的稳定性、健壮性,完善或者解决不同调度系统数据接口不兼容的问题以及同一调度系统不同版本数据接口不兼容的问题。
28.本发明在不改动原有调度系统代码的基础上,实现了中心化的存储及管理,解决了多调度系统数据难以管理、多调度系统数据接口不兼容的问题;若用户需要额外功能,可针对本调度中间件持久化之后的介质进行功能扩展;本调度中间件实现了超算集群不停机的基础上进行功能和性能扩展的效果。
29.本发明实现了持久化的数据存储,既可以使用现成的市面上成熟的数据分析软件进行统计分析,也可导出为文件,如excel,使用excel强大的功能进行统计分析;若需定制化分析,也可自主进行编码分析。
30.本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
31.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
32.图1为第一个实施例的方法流程图。
33.图2为第一个实施例中主动收集的流程图。
34.图3为第一个实施例中被动收集的流程图。
35.图4为第二个实施例的系统结构图。
具体实施方式
36.下面结合附图与实施例对本发明作进一步说明。
37.应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
38.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
39.实施例一
40.本实施例公开了一种面向超算集群调度的通用作业收集方法;
41.如图1所示,一种面向超算集群调度的通用作业收集方法,包括:
42.步骤s1、采用主动收集和被动收集两种模式获取各个超算集群调度系统的作业信息;
43.采用部分策略模式+适配器模式,面向接口编程,为不同超算集群调度系统定义各自的收集器,获取各个超算集群调度系统的作业信息时,适配不同的收集器进行作业信息收集。
44.所述主动收集,如图2所示,通过监控调度系统作业变化的监控器,将发生变化的作业信息主动推送到收集器中;主动收集利用部分调度系统提供的扩展接口及钩子函数获取变化的作业信息,但由于大多数调度系统,尤其是闭源商业调度系统,不提供二次开发的接口,因此主动收集只针对部分开放的调度系统。
45.所述被动收集,如图3所示,通过定时器设置定时任务的方式,收集各个超算集群调度系统的作业信息;通过超算集群调度系统设置的登录节点命令查询、接口api查询、存储介质查询以及自定义扩展介质查询的方式收集作业信息。
46.步骤s2、对获取的作业信息进行解析,生成结构化数据;
47.获取的作业信息,包括结构化数据和非机构化数据,非结构化数据是数据结构不规则或不完整、没有预定义的数据模型、不方便用数据库二维逻辑表来表现的数据,包括所有格式的办公文档、文本、图片、html、各类报表、图像和音频/视频信息等等。
48.非结构化数据其格式非常多样,标准也是多样性的,而且在技术上非结构化信息比结构化信息更难标准化和理解,所以为了更好地存储、检索、发布,对各超算调度的非结构化数据进行解析,生成符合存储器进行存储和更新的结构化数据,由便于人类可读的数据形式转化成便于机器可读的数据形式。
49.步骤s3、将生成的结构化数据存储在不同的用户介质中。
50.用户介质,包括搜索引擎、数据库、文件,搜索引擎如elasticsearch,数据库如mysql,而文件可以导出excel文件;通过这种持久化的数据存储方式,既可以使用现成的市面上成熟的数据分析软件进行统计分析,也可导出为excel,使用excel强大的统计分析;若
需定制化分析,也可自己进行编码分析。
51.本实施例提供的方法,采用部分策略模式、适配器模式的思想,遵守编码的五大设计原则(单一职责原则、开闭原则、里氏替换原则、接口分离原则、依赖反转原则),一方面,面向接口编程,采取策略模式,根据传入不同的调度系统类,调用不同的策略;另一方面,实现接口的规范化;比如slurm的查询作业命令为squeue,lsf的查询作业命令为bjobs,本实施例对这些命令进行了封装,统一为getjoblistfromschedule()方法,无需关注底层实现细节;除此之外,本实施例中已经集成的调度系统类不可能完全覆盖到全部调度系统,所以,设置通用接口,若需要二次开发,只需要实现该接口,并将其注入调度中间件即可,符合开闭原则,对于扩展是开放的,但是对于修改是封闭的。
52.实施例二
53.本实施例公开了一种面向超算集群调度的通用作业收集中间件;
54.如图4所示,一种面向超算集群调度的通用作业收集中间件,包括收集器、解析器和存储器;
55.收集器,被配置为:采用主动收集和被动收集两种模式获取各个超算集群调度系统的作业信息;
56.解析器,被配置为:对获取的作业信息进行解析,生成结构化数据;
57.存储器,被配置为:将生成的结构化数据存储在不同的用户介质中。
58.以一种非侵入性、可拔插的形式来实现作业收集,软件设计的标准是"高内聚低耦合",侵入性,也可以叫做耦合性,当引入某个组件,导致其它代码或者设计要做相应的更改以适应新组件,这种情况就认为这个新组件具有侵入性;具体实现上,侵入性表现为用户代码需要继承框架提供的类而非侵入性则不需要用户代码引入框架代码的信息,从类的编写者角度来看察觉不到框架的存在。
59.所述可插拔性,字面理解就是插上去和不插上去都不影响系统正常运行,插上去某个功能就会实现,拔掉又不会影响系统运行,体现在软件上就可以理解为加上配置自动运行,不加配置就自动停止,而不需要去方法里面一个个的注释掉来实现,实现功能的可插拔式设计。
60.所述通用作业收集中间件还包括扩展器,需二次开发时,只需要实现扩展器中的通用接口,并将其注入中间件中。
61.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1