CN115391006A - 一种异构多集群的数据处理方法、装置、介质及终端 - Google Patents
一种异构多集群的数据处理方法、装置、介质及终端 Download PDFInfo
- Publication number
- CN115391006A CN115391006A CN202210972749.7A CN202210972749A CN115391006A CN 115391006 A CN115391006 A CN 115391006A CN 202210972749 A CN202210972749 A CN 202210972749A CN 115391006 A CN115391006 A CN 115391006A
- Authority
- CN
- China
- Prior art keywords
- cluster
- node
- heterogeneous
- kubernets
- job
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本发明公开了一种异构多集群的数据处理方法、装置、介质及终端,方法包括:在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作;本发明采用上述方法后解决了异构多集群调度较为困难的问题,实现了能够通过使用Kubernetes集群软件像数据处理普通的单集群一样去数据处理异构的多集群。
Description
技术领域
本发明涉及多集群数据处理领域,尤其涉及一种异构多集群的数据处理方法、装置、介质及终端。
背景技术
多个节点服务器通过局域网络组建成为一个集群,共同实现业务服务。为保证大规模业务的全面数据处理,通常需要设置多个集群。在用户生产环境存在多个集群的情况下,集群数据处理员需要对所有集群中对业务可靠性存在影响的所有服务组件的运行状态,资源和配置状态等进行数据处理。
现有多集群或多云作业调度数据处理会面临各个集群之间异构性的问题,异构集群之间不仅集群硬件不一致,各个集群内使用的集群调度数据处理软件也可能不一致,在使用异构集群时,由于集群调度数据处理软件不同,会导致各个集群对外接口不一致,从而使现有异构多集群调度较为困难,导致提交的作业无法正常运行和造成集群资源的极大浪费。
发明内容
鉴于上述现有技术的不足,本申请的目的在于提供一种异构多集群的数据处理方法、装置、介质及终端,旨在解决异构多集群调度较为困难的问题。
为解决上述技术问题,本申请实施例第一方面提供了一种异构多集群的数据处理方法,所述方法包括:
一种异构多集群的数据处理方法,包括:
在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
作为进一步的改进技术方案,所述在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应包括:
通过编写实现virtual-kubelet中供应节点接口的Ping功能;
通过编写实现所述virtual-kubelet中供应节点接口的通知节点状态功能;
启动所述virtual-kubelet的虚拟节点服务,在Kubernetes数据处理系统中增加一个新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应。
作为进一步的改进技术方案,所述基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器包括:
基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器,使用Golang语言为适配器编写统一接口,所述统一接口包括创建作业、停止作业、获取作业信息和获取作业资源规格功能,其中,接口的编写需要调用所述适配器对应异构集群的原生API。
作为进一步的改进技术方案,所述在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信包括:
基于virtual-kubelet开源框架创建一个节点代理程序;
编写所述节点代理程序的接口标准,实现virtual-kubelet开源框架中PodLifecycleHandler接口的创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能;
基于所述创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能,实现所述节点代理程序与Kubernetes的应用编程接口服务器的通信。
作为进一步的改进技术方案,所述基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作包括:
基于所述节点代理程序的创建Pod功能调用适配器统一接口的创建作业功能;
基于所述节点代理程序的删除Pod功能调用适配器统一接口的停止作业功能;
基于所述节点代理程序的获取Pod信息功能调用适配器统一接口的获取作业信息功能;
基于所述节点代理程序的通知Pod功能,通过定时任务调用适配器统一接口的获取作业信息功能获取作业状态并更新Pod的状态;
基于节点代理程序的通知节点状态功能,通过定时任务调用适配器统一接口的获取作业资源规格获取异构集群的资源情况并更新虚拟节点的资源状态。
作为进一步的改进技术方案,所述创建作业功能用于向对应的异构集群提交创建作业的请求,所述停止作业功能用于将正在异构集群中运行的作业进行停止。
作为进一步的改进技术方案,所述获取作业信息功能用于向异构集群获取作业的信息,获取作业资源规格功能用于向异构集群获取资源规格的信息。
作为进一步的改进技术方案,所述创建Pod功能通过调用所述适配器统一接口的创建作业功能将Kubernetes创建的单集群Pod转换为创建异构集群的作业,所述删除Pod功能通过调用所述适配器统一接口的停止作业功能将Kubernetes要删除的单集群Pod转换为删除对应的异构集群作业。
作为进一步的改进技术方案,所述获取Pod信息功能通过调用所述适配器统一接口的获取作业信息功能将Kubernetes的应用编程接口服务器获取Pod信息转换为获取对应的异构集群作业信息。
作为进一步的改进技术方案,所述通知Pod功能通过定时调用所述适配器统一接口的获取作业信息功能向Kubernetes通知Pod状态的信息,所述通知节点状态功能通过定时调用所述适配器统一接口的获取作业资源规格功能获取异构集群资源信息,并向Kubernetes通知节点资源的信息。
本申请实施例第二方面提供了一种异构多集群的数据处理装置,包括:
虚拟节点模块,用于在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
创建适配器模块,用于基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
软件创建模块,用于在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
操作转换模块,用于基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
本申请实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的异构多集群的数据处理方法中的步骤。
本申请实施例第四方面提供了一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述通信总线实现处理器和存储器之间的连接通信;
所述处理器执行所述计算机可读程序时实现如上任一所述的异构多集群的数据处理方法中的步骤。
有益效果:相较于现有技术本发明的异构多集群的数据处理方法包括,在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作;本发明采用上述方法后解决了异构多集群调度较为困难的问题,实现了能够通过使用Kubernetes集群软件像数据处理普通的单集群一样去数据处理异构的多集群。
附图说明
图1是本发明的异构多集群的数据处理方法的流程图。
图2是本发明提供的终端设备的结构原理图。
图3是本发明提供的装置结构框图。
图4是本发明的异构多集群的数据处理方法的原理图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的较佳实施方式。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。
发明人经过研究发现,现有技术存在以下问题:
(1)Kubernetes(简称k8s,是用8代替8个字符“ubernete”而成的缩写)是一个开源的,用于数据处理云平台中多个主机上的容器化的应用。
现有多集群或多云作业调度数据处理会面临各个集群之间异构性的问题,异构集群之间不仅集群硬件不一致各个集群内使用的集群调度数据处理软件也可能不一致。例如,A集群数据处理的是超级计算机集群,使用的集群调度数据处理软件为Slurm;B集群使用了华为研发的modelArt,我们只能通过它提供的API进行操作;C集群则是一个基于Kubernetes的私有集群;在使用异构集群时,由于集群调度数据处理软件不同,会导致各个集群对外接口不一致,从而使现有异构多集群调度较为困难;而现有作业运行由于需要占用一定的资源,系统需要判断哪个集群资源能够满足作业要求,并将作业分配给相应的集群,当数据处理员要提交一个作业到异构集群中进行运行时,系统无法根据集群资源能否满足作业要求而对作业进行分配,导致作业无法正常运行或导致集群资源极大的浪费。
(2)异构多集群的作业调度,朴素的做法是创建一个调度器,该调度器使用各个集群的API和集群通信,根据获得的信息来决定作业的调度操作。然而该实现方式需要自己实现所有的调度策略而无法使用当前开源的调度器方案,扩展性和功能性都较差;而当前围绕Kubernetes集群数据处理软件的云原生开源生态发展如火如荼,基于Kubernetes集群数据处理软件之上的单集群调度器解决方案也有很多新的发展,比如Kubernetes原生调度器kube-sheduler、华为Volcano调度器等。如何能够让异构的多集群间作业调度问题转化为基于Kubernetes的单集群内部的调度问题,从而能够充分利用围绕Kubernetes的云原生社区已有的开源项目的能力,使用已有的面向Kubernetes的调度器的强大功能,是现有技术待解决的技术问题。
为了解决上述问题,下面结合附图,详细说明本申请的各种非限制性实施方式。
如图1所示,本申请实施例提供的一种异构多集群的数据处理方法,包括以下步骤:
S1,在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
具体的,将一个异构集群向上表示为一个虚拟的Kubernetes虚拟节点,在Kubernetes单集群数据处理系统的视角下,该虚拟的Kubernetes虚拟节点和普通的Kubernetes工作节点逻辑上是一致的。Kubernetes单集群数据处理系统下的所有能力,包括调度器的能力、作业控制器的能力和其他所有组件的能力都能够复用,以此为基础,可以使用围绕Kubernetes单集群数据处理系统的开源生态能力,包括开源的kube-scheduler以及其功能丰富的插件、volcano调度器、各种作业和自定义资源控制器。
其中,所述在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应包括以下步骤:
S101,通过编写实现virtual-kubelet中供应节点接口的Ping功能;
S102,通过编写实现所述virtual-kubelet中供应节点接口的通知节点状态功能;
S103,启动所述virtual-kubelet的虚拟节点服务,在Kubernetes数据处理系统中增加一个新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应。
具体的,使用virtual-kubelet开源框架实现一个虚拟节点,具体需要通过编写实现virtual-kubelet中供应节点(NodeProvider)接口的Ping功能和virtual-kubelet中供应节点接口的通知节点状态(NotifyNodeStatus)功能,启动virtual-kubelet开源框架的虚拟节点服务之后,在Kubernetes数据处理系统中将增加一个新的Kubernetes虚拟节点,该新的Kubernetes虚拟节点代表一个异构集群,其实现的原理为vitual-kubelet能够创建一个Kubernetes的Node资源对象,但该Node资源对象并不对应真实的物理节点,而是一个逻辑节点。
S2,基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
每个异构集群的适配器屏蔽了各异构集群软件的API差异,适配器向下跟每个异构集群内部的API进行通信,包括调用集群API向集群提交作业、获取集群作业运行情况、获取集群资源信息等,适配器向上跟虚拟节点代理进行通信,虚拟节点代理可以使用适配器提供的一致的API间接和各异构集群通信。
其中,所述基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器包括:
基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器,使用Golang语言为适配器编写统一接口,所述统一接口包括创建作业、停止作业、获取作业信息和获取作业资源规格功能,其中,接口的编写需要调用所述适配器对应异构集群的原生API。
具体的,适配器使用Golang语言编写,适配器主要由各个异构集群的开发者或维护者根据我们定义好的接口标准来实现功能,主要定义了一套统一接口,统一接口包括创建作业(CreateTrainJob)、停止作业(StopTrainJob)、获取作业信息(GetTrainJob)和获取作业资源规格(GetResourceSpec)功能。这些统一接口的功能分别调用该适配器对应的异构集群的原生API来实现,适配器与异构集群的通信采用http协议。
其中,所述创建作业功能用于向对应的异构集群提交创建作业的请求,所述停止作业功能用于将正在异构集群中运行的作业进行停止。
所述获取作业信息功能用于向异构集群获取作业的信息,获取作业资源规格功能用于向异构集群获取资源规格的信息。
具体的,创建作业:用于创建作业;创建作业功能具体用于实现向其对应的异构集群提交创建作业的请求,创建作业的传入参数包括作业名称、镜像名称、作业启动命令、作业所需资源规格等;创建作业的返回参数为作业ID;
停止作业:用于停止作业,该停止作业功能具体用于将正在异构集群中运行的作业进行停止,停止作业的传入参数为作业ID;
获取作业信息:用于获取作业信息;该获取作业信息功能具体用于实现向异构集群获取某作业的信息,获取作业信息的传入参数为作业ID,获取作业信息的返回参数包括该作业的名称、作业运行状态、作业开始运行时间、作业结束运行时间等;
获取作业资源规格:用于获取作业资源规格信息;该获取作业资源规格具体用于实现向异构集群获取资源规格的信息,获取作业资源规格的传入参数为资源规格类型;获取作业资源规格的返回参数为该资源规格该异构集群是否能够满足。
S3,在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
具体的,每一个节点代理程序负责向下与其对应的适配器通信,调用其统一的API接口来间接和异构集群通信,节点代理程序向上通过实现Kubernetes普通节点代理的通用接口和Kubernetes中应用编程接口服务器通信。实现这些功能需要通过调用适配器中统一接口的功能来实现。
其中,所述在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信包括包括以下步骤:
S301,基于virtual-kubelet开源框架创建一个节点代理程序;
S302,编写所述节点代理程序的接口标准,实现virtual-kubelet开源框架中PodLifecycleHandler接口的创建Pod(CreatePod)、删除Pod(DeletePod)、获取Pod信息(GetPod)、通知Pod(NotifyPods)和通知节点状态(NotifyNodeStatus)功能;
S303,基于所述创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能,实现所述节点代理程序与Kubernetes的应用编程接口服务器的通信。
具体的,为每个适配器创建一个能够与Kubernetes中应用编程接口服务器通信的节点代理程序,该节点代理程序的实现使用virtual-kubelet开源框架,从而实现virtual-kubelet开源框架中PodLifecycleHandler接口的创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能。实现这些功能之后该节点代理程序就可以接收kubernetes的应用编程接口服务器的各种操作指令。
S4,基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
具体的,可通过节点代理程序,将Kubernetes的应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
其中,所述基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作包括以下步骤:
S401,基于所述节点代理程序的创建Pod功能调用适配器统一接口的创建作业功能;
S402,基于所述节点代理程序的删除Pod功能调用适配器统一接口的停止作业功能;
S403,基于所述节点代理程序的获取Pod信息功能调用适配器统一接口的获取作业信息功能;
S404,基于所述节点代理程序的通知Pod功能,通过定时任务调用适配器统一接口的获取作业信息功能获取作业状态并更新Pod的状态;
S405,基于节点代理程序的通知节点状态功能,通过定时任务调用适配器统一接口的获取作业资源规格获取异构集群的资源情况并更新虚拟节点的资源状态。
具体的,所述创建Pod功能通过调用所述适配器统一接口的创建作业功能将Kubernetes创建的单集群Pod转换为创建异构集群的作业,所述删除Pod功能通过调用所述适配器统一接口的停止作业功能将Kubernetes要删除的单集群Pod转换为删除对应的异构集群作业。
具体的,所述获取Pod信息功能通过调用所述适配器统一接口的获取作业信息功能将Kubernetes的应用编程接口服务器获取Pod信息转换为获取对应的异构集群作业信息。
具体的,所述通知Pod功能通过定时调用所述适配器统一接口的获取作业信息功能向Kubernetes通知Pod状态的信息,所述通知节点状态功能通过定时调用所述适配器统一接口的获取作业资源规格功能获取异构集群资源信息,并向Kubernetes通知节点资源的信息。
具体而言,在节点代理程序的创建Pod调用适配器的创建作业;在节点代理程序的删除Pod调用适配器的停止作业;在节点代理程序的获取Pod信息调用适配器的获取作业信息;在节点代理程序的通知Pod接口则通过定时任务调用获取作业信息获取作业状态更新Pod的状态;在节点代理程序的通知节点状态接口通过定时任务调用获取作业资源规格获取异构集群的资源情况更新虚拟节点的资源状态。
创建Pod:创建Pod功能实现;当Kubernetes要创建一个单集群Pod时,在此实现中将该操作转换为创建一个异构集群的作业,通过调用适配器的创建作业功能来实现。
删除Pod:删除Pod功能实现;当Kubernetes要删除一个单集群Pod时,在此实现中将该操作转换为删除其对应的异构集群作业,通过调用适配器的停止作业功能来实现。
获取Pod信息:获取Pod信息;当通过Kubernetes的应用编程接口服务器获取Pod信息时,在此实现中将该操作转换为获取其对应的异构集群作业信息,通过调用适配器的获取作业信息功能来实现。
通知Pod:主动通知Pod信息变更实现;通过定时调用适配器的获取作业信息功能来及时通知Kubernetes关于Pod的状态等信息变更。
通知节点状态:主动通知节点信息变更实现;通过定时调用适配器的获取作业资源规格来获取异构集群资源相关信息,来及时通知Kubernetes关于节点的资源等信息变更。
为了能像数据处理普通的Kubernetes单集群一样去数据处理异构的多集群,通过将每一个集群表示为一个虚拟节点,为每个虚拟节点创建一个节点代理程序和一个适配器。每个集群适配器屏蔽了各异构集群软件的API差异,向下跟每个集群内部的API进行通信,包括调用集群API向集群提交作业、获取集群作业运行情况、获取集群资源信息等。适配器向上跟虚拟节点代理进行通信,虚拟节点代理可以使用适配器提供的一致的API间接和各集群通信。虚拟节点代理向上则和Kubernetes的应用编程接口服务器进行通信,伪装成为一个普通的Kubernetes虚拟节点代理。为此,该虚拟节点代理需要实现Kubernetes虚拟节点代理的功能接口,以能够接受Kubernetes的数据处理和操作。
本方法有以下优点:
将异构多集群的作业数据处理和调度问题转化为单集群Kubernetes作业数据处理和调度,由此可以充分利用围绕Kubernetes开源社区的丰富和强大能力;
适配器的设计使得架构上分层解耦,虚拟节点代理只需要调用统一的API,而不需要调用异构集群的原生API,适配器由异构集群的开发者和维护者实现,只要按照我们提出的接口标准实现即可;
虚拟节点代理的设计将异构集群逻辑上表示为一个普通节点,能够由Kubernetes直接进行控制,且该节点代理屏蔽了下层的异构差异,向上保持了Kubernetes的完整功能。
举例说明:
下以接入使用modelArts的集群为例:
第一步:为modelArts集群创建一个适配器,使用golang语言编写,使用http协议与modelArts通信,主要实现以下统一接口:
创建作业:通过http的Post方法,请求url为/training-jobs,Post方法的body传入参数包括:任务名,镜像id,资源规格id,启动命令;此功能用于创建作业。
停止作业:通过http的Post方法,请求modelArts的url为/training-jobs/{jobid}/versions/{versionId}/stop,以停止该jobid的作业;
获取作业信息:通过http的Get方法,请求modelArts的url为/training-jobs/{jobId}/versions,获取作业信息;
获取作业资源规格:通过http的Get方法,请求modelArts的url为/flavors,获取资源规格信息。
第二步:使用golang语言创建一个Provider项目,引入virtual-kubelet的库,分别实现virtual-kubelet的供应节点(NodeProvider)和通知节点状态接口的所有功能,这些功能的实现需要调用对应适配器的统一接口,具体如下:
通知节点状态:通过定时器定时调用适配器的获取作业资源规格功能,获取modelArts集群的资源使用情况,从而通知虚拟节点的资源使用情况。
创建Pod:调用适配器的创建作业功能,以实现kubernetes创建Pod到适配器创建异构集群作业的转换。
删除Pod:调用适配器的停止作业功能,以实现kubernetes删除Pod到适配器停止异构集群作业的转换。
获取Pod信息:调用适配器的获取作业信息功能,以实现kubernetes获取Pod信息到适配器获取异构集群作业信息的转换。
通知Pod:过定时器定时调用适配器的获取作业信息功能,获取作业的即时状态信息,从而通知Pod的状态信息。
第三步:运行适配器服务和Provider服务。用户通过创建kubernetes的Pod资源,该Pod资源由Kubernetes调度器调度到该Provider代表的虚拟节点上,触发了Provider中的创建Pod功能。创建Pod功能调用了适配器的创建作业功能,适配器的创建作业功能则通过Post请求将创建作业请求发送到modelArts集群,从而成功地创建了异构集群作业。
第四步:当modelArts的状态变更为运行中,通知Pod通过定时器即时通过适配器的获取作业信息功能获取到该状态信息,将Pod的状态更新为running。用过在Kubernetes的命令行数据处理工具可以查询得到该Pod的运行状态。
第五步:用户通过Kubernetes的命令行数据处理工具或应用编程接口服务器d接口发起删除该Pod资源,触发了Provider中的删除Pod功能。删除Pod功能调用了适配器的停止作业功能,适配器的停止作业功能则通过Post请求将停止作业请求发送到modelArts集群,从而成功地停止了异构集群作业。
基于上述异构多集群的数据处理方法,本实施例提供了一种异构多集群的数据处理装置,包括:
虚拟节点模块1,用于在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
创建适配器模块2,用于基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
软件创建模块3,用于在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
操作转换模块4,用于基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
此外值得说明,本实施例提供的基于异构多集群的数据处理装置的工作过程与上述异构多集群的数据处理方法的工作过程相同,具体可以参照异构多集群的数据处理方法的工作过程,这里就不再赘述。
基于上述异构多集群的数据处理方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的异构多集群的数据处理方法中的步骤。
如图2所示,基于上述异构多集群的数据处理方法,本申请还提供了一种终端设备,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(Communications Interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
相较于现有技术本发明的异构多集群的数据处理方法包括,在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作;本发明采用上述方法后解决了异构多集群调度较为困难的问题,实现了能够通过使用Kubernetes集群软件像数据处理普通的单集群一样去数据处理异构的多集群。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (13)
1.一种异构多集群的数据处理方法,其特征在于,包括:
在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
2.根据权利要求1所述的一种异构多集群的数据处理方法,其特征在于,所述在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应包括:
通过编写实现virtual-kubelet中供应节点接口的Ping功能;
通过编写实现所述virtual-kubelet中供应节点接口的通知节点状态功能;
启动所述virtual-kubelet的虚拟节点服务,在Kubernetes数据处理系统中增加一个新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应。
3.根据权利要求2所述的一种异构多集群的数据处理方法,其特征在于,所述基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器包括:
基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器,使用Golang语言为适配器编写统一接口,所述统一接口包括创建作业、停止作业、获取作业信息和获取作业资源规格功能,其中,接口的编写需要调用所述适配器对应异构集群的原生API。
4.根据权利要求3所述的一种异构多集群的数据处理方法,其特征在于,所述在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信包括:
基于virtual-kubelet开源框架创建一个节点代理程序;
编写所述节点代理程序的接口标准,实现virtual-kubelet开源框架中PodLifecycleHandler接口的创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能;
基于所述创建Pod、删除Pod、获取Pod信息、通知Pod和通知节点状态功能,实现所述节点代理程序与Kubernetes的应用编程接口服务器的通信。
5.根据权利要求4所述的一种异构多集群的数据处理方法,其特征在于,所述基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作包括:
基于所述节点代理程序的创建Pod功能调用适配器统一接口的创建作业功能;
基于所述节点代理程序的删除Pod功能调用适配器统一接口的停止作业功能;
基于所述节点代理程序的获取Pod信息功能调用适配器统一接口的获取作业信息功能;
基于所述节点代理程序的通知Pod功能,通过定时任务调用适配器统一接口的获取作业信息功能获取作业状态并更新Pod的状态;
基于节点代理程序的通知节点状态功能,通过定时任务调用适配器统一接口的获取作业资源规格获取异构集群的资源情况并更新虚拟节点的资源状态。
6.根据权利要求5所述的一种异构多集群的数据处理方法,其特征在于,所述创建作业功能用于向对应的异构集群提交创建作业的请求,所述停止作业功能用于将正在异构集群中运行的作业进行停止。
7.根据权利要求6所述的一种异构多集群的数据处理方法,其特征在于,所述获取作业信息功能用于向异构集群获取作业的信息,获取作业资源规格功能用于向异构集群获取资源规格的信息。
8.根据权利要求7所述的一种异构多集群的数据处理方法,其特征在于,所述创建Pod功能通过调用所述适配器统一接口的创建作业功能将Kubernetes创建的单集群Pod转换为创建异构集群的作业,所述删除Pod功能通过调用所述适配器统一接口的停止作业功能将Kubernetes要删除的单集群Pod转换为删除对应的异构集群作业。
9.根据权利要求8所述的一种异构多集群的数据处理方法,其特征在于,所述获取Pod信息功能通过调用所述适配器统一接口的获取作业信息功能将Kubernetes的应用编程接口服务器获取Pod信息转换为获取对应的异构集群作业信息。
10.根据权利要求9所述的一种异构多集群的数据处理方法,其特征在于,所述通知Pod功能通过定时调用所述适配器统一接口的获取作业信息功能向Kubernetes通知Pod状态的信息,所述通知节点状态功能通过定时调用所述适配器统一接口的获取作业资源规格功能获取异构集群资源信息,并向Kubernetes通知节点资源的信息。
11.一种异构多集群的数据处理装置,其特征在于,包括:
虚拟节点模块,用于在Kubernetes数据处理系统中增加新的Kubernetes虚拟节点,将每个所述Kubernetes虚拟节点与异构多集群中的每个异构集群相对应;
创建适配器模块,用于基于所述Kubernetes虚拟节点为每个所述异构集群单独创建一个适配器;
软件创建模块,用于在Kubernetes数据处理系统中部署一个与所述适配器相对应的节点代理程序,其中,所述适配器通过所述节点代理程序可与Kubernetes的应用编程接口服务器通信;
操作转换模块,用于基于所述节点代理程序,将所述应用编程接口服务器对kubelet的操作转换为对异构集群的作业操作。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-10任意一项所述的异构多集群的数据处理方法中的步骤。
13.一种终端设备,其特征在于,包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述通信总线实现处理器和存储器之间的连接通信;
所述处理器执行所述计算机可读程序时实现如权利要求1-10任意一项所述的异构多集群的数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210972749.7A CN115391006A (zh) | 2022-08-15 | 2022-08-15 | 一种异构多集群的数据处理方法、装置、介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210972749.7A CN115391006A (zh) | 2022-08-15 | 2022-08-15 | 一种异构多集群的数据处理方法、装置、介质及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391006A true CN115391006A (zh) | 2022-11-25 |
Family
ID=84118531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210972749.7A Pending CN115391006A (zh) | 2022-08-15 | 2022-08-15 | 一种异构多集群的数据处理方法、装置、介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391006A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016028A (zh) * | 2022-12-09 | 2023-04-25 | 明阳产业技术研究院(沈阳)有限公司 | 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备 |
CN116700933A (zh) * | 2023-08-02 | 2023-09-05 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN116737344A (zh) * | 2023-08-10 | 2023-09-12 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
-
2022
- 2022-08-15 CN CN202210972749.7A patent/CN115391006A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016028A (zh) * | 2022-12-09 | 2023-04-25 | 明阳产业技术研究院(沈阳)有限公司 | 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备 |
CN116016028B (zh) * | 2022-12-09 | 2024-03-15 | 明阳产业技术研究院(沈阳)有限公司 | 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备 |
CN116700933A (zh) * | 2023-08-02 | 2023-09-05 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN116700933B (zh) * | 2023-08-02 | 2023-11-21 | 之江实验室 | 一种面向异构算力联邦的多集群作业调度系统和方法 |
CN116737344A (zh) * | 2023-08-10 | 2023-09-12 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
CN116737344B (zh) * | 2023-08-10 | 2023-11-07 | 中国电子投资控股有限公司 | 一种多容器集群的调度方法及调度服务系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115391006A (zh) | 一种异构多集群的数据处理方法、装置、介质及终端 | |
CN110752947B (zh) | 一种k8s集群部署方法及装置,一种部署平台 | |
CN103064742A (zh) | 一种hadoop集群的自动部署系统及方法 | |
CN111506412A (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
US8032588B2 (en) | System and method for hosting one or more versions of a service using a service proxy | |
CN103810023A (zh) | 一种云平台中分布式应用的智能部署方法及系统 | |
CN113067850B (zh) | 一种多云场景下的集群编排系统 | |
US20210191780A1 (en) | Method and apparatus for processing development machine operation task, device and storage medium | |
CN104954411A (zh) | 分布式系统共享网络资源的方法、终端及系统 | |
CN115292026B (zh) | 容器集群的管理方法、装置、设备及计算机可读存储介质 | |
JP7161560B2 (ja) | 人工知能開発プラットフォームの管理方法及び装置、媒体 | |
CN115242877B (zh) | 面向多K8s集群的Spark协同计算、作业方法及装置 | |
CN111143170A (zh) | 云手机监控系统和方法 | |
CN110618821A (zh) | 基于Docker的容器集群系统及快速搭建方法 | |
CN110569104A (zh) | 深度学习系统中任务训练的管理方法和计算机存储介质 | |
CN112948055A (zh) | 一种基于云计算的创新型课程实验自动管理方法及系统 | |
KR100834419B1 (ko) | 컴포넌트 핫스와핑을 지원하는 sca 기반 시스템 및 그지원 방법 | |
CN102339222B (zh) | 在oms手机上启动应用程序的方法 | |
CN113934711B (zh) | 一种自动化部署gbase8s集群的方法 | |
CN116719771A (zh) | 一种核间通信调度方法、系统及装置 | |
WO2022267646A1 (zh) | 一种容器集的部署方法及装置 | |
CN115113975A (zh) | 集群管理的方法、装置、电子设备及存储介质 | |
CN112579253B (zh) | 一种管理容器的方法及系统 | |
CN114996352A (zh) | 数据库管理系统及方法 | |
CN103617077A (zh) | 智能型云端化移转的方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |