CN115242877B - 面向多K8s集群的Spark协同计算、作业方法及装置 - Google Patents

面向多K8s集群的Spark协同计算、作业方法及装置 Download PDF

Info

Publication number
CN115242877B
CN115242877B CN202211148298.1A CN202211148298A CN115242877B CN 115242877 B CN115242877 B CN 115242877B CN 202211148298 A CN202211148298 A CN 202211148298A CN 115242877 B CN115242877 B CN 115242877B
Authority
CN
China
Prior art keywords
cluster
slave
spark
unit
driver unit
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.)
Active
Application number
CN202211148298.1A
Other languages
English (en)
Other versions
CN115242877A (zh
Inventor
高丰
陈旭东
毛良献
白文媛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202211148298.1A priority Critical patent/CN115242877B/zh
Publication of CN115242877A publication Critical patent/CN115242877A/zh
Application granted granted Critical
Publication of CN115242877B publication Critical patent/CN115242877B/zh
Priority to PCT/CN2023/088148 priority patent/WO2024060596A1/zh
Priority to US18/554,450 priority patent/US11954525B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2895Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了面向多K8s集群的Spark协同计算、作业方法及装置,针对目前多K8s集群大多采用联邦集群的模式,而Spark自身的调度和优化的方法不能跨域实现的问题,通过实现跨域协同中心,将多K8s集群设置为主集群和从集群,主集群负责创建Spark的Driver容器和Pod,从集群负责创建Spark的Executor容器和Pod。在创建容器之后,通过协同中心汇聚地址信息和访问凭证,在主集群和从集群之间建立直联的隧道,并通过隧道实现从集群中的容器向Driver注册并持续发送心跳报文。Driver在注册完成之后,可以通过隧道下发执行任务,并通过窄/宽等不同的数据依赖关系,实现在不同集群的最优调度。

Description

面向多K8s集群的Spark协同计算、作业方法及装置
技术领域
本发明涉及云计算和大数据技术领域,尤其是涉及面向多K8s集群的Spark协同计算、作业方法及装置。
背景技术
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,2009 年,Spark 诞生于加州大学伯克利分校的 AMP 实验室(the Algorithms, Machines andPeople lab),并于 2010 年开源。2013 年,Spark 捐献给阿帕奇软件基金会(ApacheSoftware Foundation),并于 2014 年成为 Apache 顶级项目。如今,Spark成为了大大小小企业与研究机构的常用工具之一,Spark平台所累积的成熟应用已经成为数据行业重要的资产。
Kubernetes是开源的容器调度编排平台,由于Kubernetes适用服务抽象支持命名和负载均衡,并且通过标签组织多容器调度单元Pod,实现了较好的灵活性、可用性和负载均衡性。因此,在云原生技术发展的浪潮之中,Kubernetes伴随着容器技术的发展,成为了目前云时代的操作***。Kubernetes作为容器编排领域的事实标准和云原生领域的关键项目,已经是云原生时代工程师最需要理解与实践的核心技术。
大数据、大模型的智能计算为代表的复杂应用的出现,使得单集群资源很难胜任超大型、复杂的计算任务,尤其是大数据相关的复杂计算任务,需要规模较大数据中心。然而数据中心缺少弹性能力,为保证业务应对突发请求等情况,普遍存在资源浪费情况。目前的多Kubernetes集群多采用联邦集群的模式,Spark自身的调度和优化的方法不能跨域实现。
发明内容
为解决现有技术的不足,实现多集群的算力有效的协同在一起处理复杂Spark计算任务的目的,本发明采用如下的技术方案:
一种面向多集群的协同作业方法,应用于协同中心,包括如下步骤:
步骤S101:根据用户提交的作业状态信息,指定主集群和从集群;
作业是指用户在一次解决或是一个事务处理过程中要求计算***所做的工作的集合,它包括用户程序、所需要的数据集控制命令等。作业是由一系列有序的步骤组成的,在执行一个作业会涉及多个网络节点上的计算、存储等;作业状态信息包括用户选择的策略和计算资源、数据存储等状态信息;
步骤S102:向主集群发送作业描述文件,以使主集群建立驱动器单元;向从集群提交作业描述文件,以使从集群建立从集群执行器单元;
步骤S103:向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
步骤S104:作业执行完成后,释放执行作业所占用的资源。
进一步地,所述步骤S101中,协同中心根据用户提交的作业状态信息判断是否单集群作业,若是,则选择单集群执行业务,执行完成后释放占用的资源,否则指定主集群和从集群,并执行步骤S102。
进一步地,所述步骤S102中,向主集群提交作业描述文件,以使主集群启动作业后,还建立了主集群执行器单元;步骤S103中,向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册后,还使主集群执行器单元向注册的驱动器单元发送注册信息,以完成主集群执行器单元在驱动器单元的注册,使注册的主集群执行器单元执行主集群发送的作业。
进一步地,所述步骤S103中,协同中心向主集群发送驱动器单元注册信息的同时,还向主集群发送反向代理启动请求,并通过从集群执行器单元建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,以使从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册。
基于反向代理实现自定义协议,实现单一计算任务下,跨域集群的直接通信,该方法避免了通过第三方的转发,实现高效通信。
进一步地,所述步骤S103中,以使从集群向注册的驱动器单元发送注册信息的同时,还发送心跳报文,使得主集群根据从集群的注册信息和心跳报文判断连接是否成功,若均收到,则连接成功,发送作业;否则,连接失败,继续等待。
一种面向多集群的协同作业装置,包括作业接口模块、作业指派模块和资源接口模块,所述作业指派模块包括集群指定模块、作业描述文件下发模块、注册信息下发模块和资源释放模块;
所述作业接口模块,用于获取用户提交的作业;
所述集群指定模块,根据用户提交的作业状态信息,指定主集群和从集群;
所述作业描述文件下发模块,向主集群发送作业描述文件,以使主集群建立驱动器单元;向从集群提交作业描述文件,以使从集群建立从集群执行器单元;
所述注册信息下发模块,向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
所述资源释放模块,用于作业执行完成后释放占用的资源;
所述资源接口模块,用于获取各集群的资源状态。
一种面向多集群的协同作业方法,应用于主集群,包括如下步骤:
步骤S201:获取协同中心发送的作业描述文件,建立驱动器单元;
步骤S202:获取驱动器单元注册信息,完成驱动器单元在协同中心的注册,通过注册的驱动器单元,获取从集群执行器单元发送的注册信息,完成从集群执行器单元在驱动器单元的注册,所述从集群执行器,是从集群根据协同中心的作业描述文件建立的;
步骤S203:向注册的从集群发送作业,以使注册的从集群执行器单元执行作业。
一种面向多集群的协同作业方法,应用于从集群,包括如下步骤:
步骤S301:获取协同中心发送的作业描述文件,建立从集群执行器单元;
步骤S302:向注册的驱动器单元发送注册信息,完成从集群执行器单元在驱动器单元的注册;所述驱动器单元,是主集群根据协同中心的作业描述文件建立的;所述驱动器单元的注册,是根据协同中心发送的驱动器单元注册信息,在协同中心完成的注册;
步骤S303:获取主集群发送的作业,并通过从集群执行器单元执行作业。
一种面向多K8s集群的Spark协同计算方法,应用于协同中心,包括如下步骤:
步骤S401:根据用户提交的计算引擎Spark的作业状态信息,指定K8s主集群和K8s从集群;
步骤S402:向K8s主集群的K8s API接口发送作业描述的Yaml文件,以使K8s主集群收到计算引擎Spark的提交请求后,调用spark-submit(为任务提交指令)指令启动作业,建立单个Spark驱动器单元;向多个K8s从集群提交作业描述的Yaml文件,以使K8s从集群建立从集群Spark执行器单元;
实现单一Spark Driver利用不同Kubernetes集群的计算资源完成计算任务,不同于基于Kubernetes Fed的实现方法,本方法不会产生多个Spark Driver,实现多集群的资源对Spark的计算流程透明化;
步骤S403:向K8s主集群发送Spark驱动器单元注册信息,以完成Spark驱动器单元在协同中心的注册,使K8s从集群向注册的Spark驱动器单元发送注册信息,以完成从集群Spark执行器单元在Spark驱动器单元的注册,使注册的从集群Spark执行器单元,在Spark驱动器单元的配置下,执行K8s主集群发送的作业;
步骤S404:作业执行完成后,释放执行作业所占用的资源。
一种面向多K8s集群的Spark协同计算装置,包括作业接口模块、作业指派模块和资源接口模块,所述作业指派模块包括K8s集群指定模块、作业描述Yaml文件下发模块、注册信息下发模块和资源释放模块;
所述作业接口模块,用于获取用户提交的作业;
所述K8s集群指定模块,根据用户提交的计算引擎Spark的作业状态信息,指定K8s主集群和K8s从集群;
所述作业描述Yaml文件下发模块,向K8s主集群的K8s API接口发送作业描述的Yaml文件,以使K8s主集群收到计算引擎Spark的提交请求后,调用spark-submit指令启动作业,建立单个Spark驱动器单元;向多个K8s从集群提交作业描述的Yaml文件,以使K8s从集群建立从集群Spark执行器单元;
实现单一Spark Driver利用不同Kubernetes集群的计算资源完成计算任务,不同于基于Kubernetes Fed的实现方法,本方法不会产生多个Spark Driver,实现多集群的资源对Spark的计算流程透明化;
所述注册信息下发模块,向K8s主集群发送Spark驱动器单元注册信息,以完成Spark驱动器单元在协同中心的注册,使K8s从集群向注册的Spark驱动器单元发送注册信息,以完成从集群Spark执行器单元在Spark驱动器单元的注册,使注册的从集群Spark执行器单元,在Spark驱动器单元的配置下,执行K8s主集群发送的作业;
所述资源释放模块,作业执行完成后,释放执行作业所占用的资源;
所述资源接口模块,用于获取各集群的资源状态。
本发明的优势和有益效果在于:
本发明的面向多K8s集群的Spark协同计算、作业方法及装置,通过单一Spark驱动器单元,利用多个不同Kubernetes从集群的计算资源,完成计算任务,不同于现有技术,本发明不会产生多个驱动器单元,实现多集群的资源,对Spark的计算流程透明化;从而实现了多集群的算力有效的协同在一起处理复杂Spark计算任务。
附图说明
图1a是本发明实施例中一种面向多K8s集群的Spark协同作业方法的架构图。
图1b是本发明的一种面向多K8s集群的Spark协同作业方法的流程图。
图2是本发明实施例中一种面向多K8s集群的Spark协同作业装置的结构示意图。
图3是本发明的一种面向多集群的协同作业方法应用于协同中心的流程图。
图4是本发明的一种面向多集群的协同作业装置的结构示意图。
图5是本发明的一种面向多集群的协同作业方法应用于主集群的流程图。
图6是本发明的一种面向多集群的协同作业方法应用于从集群的流程图。
图7是本发明的一种面向多集群的协同作业设备的结构示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1a、图1b所示,本发明一种面向多K8s集群的Spark协同作业方法,是基于Kubernetes API 资源构建的Operator工具,管理和监控部署应用程序。Operator可以看作是一种解决复杂应用容器化问题的模式。利用Operator定制资源管理应用及其组件,用户可以对复杂的有状态应用,进行创建、配置和管理。Operator遵循Kubernetes声明式API和Controller的设计理念,被用来扩展Kubernetes API。Operator 基于Kubernetes的资源和控制器概念之上构建,但同时又包含了Spark特定的领域知识。本发明的具体实施方案,包括跨集群的通信隧道的建立、主集群Driver Pod创立、从集群Executor Pod创立、从集群Executor Pod的注册、主集群Driver Pod任务下发等过程,其中,C表示协同中心,M表示K8S主集群或K8S单集群,S表示K8S从集群,具体包括如下步骤:
步骤S1:将用户的Spark应用提交到协同中心;
步骤S2:协同中心根据用户选择的策略和计算资源、数据存储等状态信息,判断是否为K8S单集群完成,如果是,则协同中心选择合适的K8S集群部署当前的Spark应用;如果需要多集群协同完成,则跳转到步骤S3;
步骤S3:协同中心根据用户选择的策略、计算资源、数据存储的状态,指定1个K8S主集群、1个或多个K8S从集群;
具体地,跨集群通信隧道建立
采用路由表机制和VxLan(Virtual eXtensible LAN,可扩展虚拟局域网络)机制构建跨集群通信隧道。通过在Pod构建VTEP(VXLAN Tunnel End Point)称为VxLan隧道的起点和终点,通过VNI(Virtual Network Infrastructure,虚拟网络基础设施)构建了不同用户的封装机制,实现了安全通信。基于VxLan发送报文的过程如下所示:
开始
输入:需要跨域发送的消息Msg
输出:创建成功或失败状态
SetIPTableRule(TargetIP) # 设置路由表规则,报文到达VTEP起点
Packet = SetupIpOverIP(Msg)# 构建IP over IP报文
SendPacket(Package)# 发送到目的集群VTEP终点
Msg = GetOriginalIP(Package)# 恢复IP报文,发送给容器
Status = GetStatus()# 获取通信状态
结束
步骤S4:协同中心向主集群Api Server提交作业描述的Yaml文件,主集群收到Spark的提交请求,调用spark-submit启动作业,建立Spark Driver类Pod和SparkExecutor的Pods;主集群向协同中心发送两类Pods的地址信息、证书信息;图1a中建立两类Spark Pods即建立Spark Driver类Pod和Spark Executor的Pods,即主集群建立驱动器单元和从集群执行器单元;Pod是k8s的最小单元,容器包含在pod中,即pod是一组容器的集合;
具体地,主集群Driver Pod的创立
主集群Driver Pod的创建基于k8s的客户端client的机制,client与API Server进行通信,输入参数完成Driver Pod的创建过程。client实际上是HTTPS的客户端,对于Pod创建、删除、容器创建等实际上都是由API Server来负责的,如果控制器controller相要完成这些动作,唯一的通路就是创建HTTPS,并向API Server发送请求;client机制的过程如下所示:
开始
输入:Driver 容器配置,Driver Pod的配置
输出:创建成功或失败的状态
DriverContainer = CreateContainer() #构建Build the container容器参数
DriverPod = CreatePod() #构建Build the Pod单元参数
Sid = SerializeSend(DriverContainer, DriverPod) #序列化并发送APIServer
Wait until stopped or failed
Status = GetStatus() # 获取创建状态
结束
步骤S5:从集群收到作业描述信息(以Yaml文件描述),建立Spark ExecutorPods;将同意(或拒绝)应答发送给协同中心;
具体地,从集群Executor Pod创立:
从集群Executor Pod的创立过程类似于主集群Driver Pod创立过程。从集群从协同中心获取Executor Pod的配置信息和容器,创建相应的Executor Pod。
开始
输入:创建Executor Pod和容器指令
输出:创建成功或失败的状态
Arg = GetArgument() #从协同中心获取Executor Pod参数
DriverContainer = CreateContainer() #构建Build the container容器参数
DriverPod = CreatePod() #构建Build the Pod单元参数
Sid = SerializeSend(DriverContainer, DriverPod) #序列化并发送APIServer
Wait until stopped or failed
Status = GetStatus() # 获取创建状态
结束
步骤S6:协同中心向主集群发送Spark Driver注册信息,并发送启动ReverseProxy的请求;
此时Driver确定了此次作业的Executors的数量。通过已经部署的ReverseProxy,生效Reverse Proxy;
步骤S7:从集群发送的地址信息和证书信息,向主集群的Reverse Proxy进行连接,如连接成功,发送Executors的注册信息,并且发送心跳报文;
步骤S8:主集群判断是否收到所有从集群注册信息和心跳报文,如果收到,则连接成功,跳转步骤S9;如果未收到,则继续等待;
具体地,从集群Executor 容器注册
在Executor Pod创建成功后,Executor Pod中的容器通过向Driver容器发送heartbeat报文,确认和Driver Pod建立通信链路。发送容器的资源信息和访问凭证提供给Driver,完成Executor容器和Driver的注册过程
开始
输入:向Driver进行注册命令
输出:注册成功或失败状态
Resource = GetResource() #获取容器自身的静态资源配置
Credentials = GetCredentials() #获取容器的访问凭证
Driver = GetDriver() #获取Driver的Url
SendHeartbeat(Driver) # 发送心跳报文
Sid = SerializeSend(Driver, Resource, Credentials) #序列化资源和凭证信息,发送给Driver
Wait until stopped or failed
Status = GetStatus() # 获取注册完成状态
结束
步骤S9:主集群向所有集群的Executors发送Task;
具体地,主集群Driver容器任务指派和调度
在从集群容器注册成功后,主集群的Driver进入指派任务task流程。由于不同集群所存储的数据存在差异,尽量将任务基于数据的存储位置进行指派和调度。
开始
输入:task指派开始指令
输出:指派成功或视频状态
Task = GetTask() # Driver 获取任务
Executors = GetExecutors() #Drvier获取Executor 容器列表
for exe in Executors: #针对每个容器
GetCredential(exe) #获取访问凭证
SerializeSend(exe, Task, Credential) #Task序列化并发送给Executor容器
Wait until stopped or failed
Status = GetStatus() #获取访问状态
结束
步骤S10:主集群和从集群开始在Driver的配置下执行作业,如果作业执行完成,协同中心通知释放资源;
如图2所示,一种面向多K8s集群的Spark协同计算装置,包括作业接口模块、作业指派模块和资源接口模块,作业指派模块包括K8s集群指定模块、作业描述Yaml文件下发模块、注册信息下发模块和资源释放模块;
作业接口模块,用于获取用户提交的作业;
K8s集群指定模块,根据用户提交的计算引擎Spark的作业状态信息,指定K8s主集群和K8s从集群;
作业描述Yaml文件下发模块,向K8s主集群的K8s API接口发送作业描述的Yaml文件,以使K8s主集群收到计算引擎Spark的提交请求后,调用spark-submit指令启动作业,建立单个Spark驱动器单元和一组Spark执行器单元,反馈Spark驱动器单元和Spark执行器单元地址;向多个K8s从集群提交作业描述的Yaml文件,以使K8s从集群建立从集群Spark执行器单元,并反馈接收或拒绝;
实现单一Spark Driver利用不同Kubernetes集群的计算资源完成计算任务,不同于基于Kubernetes Fed的实现方法,本方法不会产生多个Spark Driver,实现多集群的资源对Spark的计算流程透明化;图2中的Kube Proxy即Kubernetes 容器调度编排平台的网络代理;
注册信息下发模块,向K8s主集群发送Spark驱动器单元注册信息,以完成Spark驱动器单元在协同中心的注册,使K8s从集群向注册的Spark驱动器单元发送注册信息,以完成从集群Spark执行器单元在Spark驱动器单元的注册,使注册的从集群Spark执行器单元,在Spark驱动器单元的配置下,执行K8s主集群发送的作业;
资源释放模块,作业执行完成后,释放执行作业所占用的资源;
资源接口模块,用于获取各集群的资源状态。
如图3所示,一种面向多集群的协同作业方法,应用于协同中心,包括如下步骤:
步骤S101:根据用户提交的作业状态信息,指定主集群和从集群;
作业是指用户在一次解决或是一个事务处理过程中要求计算***所做的工作的集合,它包括用户程序、所需要的数据集控制命令等。作业是由一系列有序的步骤组成的,在执行一个作业会涉及多个网络节点上的计算、存储等;作业状态信息包括用户选择的策略和计算资源、数据存储等状态信息;
协同中心根据用户提交的作业状态信息判断是否单集群作业,若是,则选择单集群执行业务,执行完成后释放占用的资源,否则指定主集群和从集群,并执行步骤S102;
步骤S102:向主集群发送作业描述文件,以使主集群建立驱动器单元;向从集群提交作业描述文件,以使从集群建立从集群执行器单元;
向主集群提交作业描述文件,以使主集群启动作业后,还建立了主集群执行器单元;
步骤S103:向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册后,还使主集群执行器单元向注册的驱动器单元发送注册信息,以完成主集群执行器单元在驱动器单元的注册,使注册的主集群执行器单元执行主集群发送的作业;
协同中心向主集群发送驱动器单元注册信息的同时,还向主集群发送反向代理(图1a中的Reverse Proxy)启动请求,并通过从集群执行器单元建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,以使从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册。
基于反向代理实现自定义协议,实现单一计算任务下,跨域集群的直接通信,该方法避免了通过第三方的转发,实现高效通信。
以使从集群向注册的驱动器单元发送注册信息的同时,还发送心跳报文,使得主集群根据从集群的注册信息和心跳报文判断连接是否成功,若均收到,则连接成功,发送作业(图1a中的Task);否则,连接失败,继续等待;
步骤S104:作业执行完成后,释放执行作业所占用的资源。
这部分内容实施方式与上述方法实施例的实施方式类似,此处不再赘述。
如图4所示,一种面向多集群的协同作业装置,包括作业接口模块、作业指派模块和资源接口模块,作业指派模块包括集群指定模块、作业描述文件下发模块、注册信息下发模块和资源释放模块;
作业接口模块,用于获取用户提交的作业;
集群指定模块,根据用户提交的作业状态信息,指定主集群和从集群;
作业描述文件下发模块,向主集群发送作业描述文件,以使主集群建立驱动器单元;向从集群提交作业描述文件,以使从集群建立从集群执行器单元;
注册信息下发模块,向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
资源释放模块,用于作业执行完成后释放占用的资源;
资源接口模块,用于获取各集群的资源状态。
这部分内容实施方式与上述装置实施例的实施方式类似,此处不再赘述。
如图5所示,一种面向多集群的协同作业方法,应用于主集群,包括如下步骤:
步骤S201:获取协同中心发送的作业描述文件,建立驱动器单元;
步骤S202:获取驱动器单元注册信息,完成驱动器单元在协同中心的注册,通过注册的驱动器单元,获取从集群执行器单元发送的注册信息,完成从集群执行器单元在驱动器单元的注册,所述从集群执行器,是从集群根据协同中心的作业描述文件建立的;
步骤S203:向注册的从集群发送作业,以使注册的从集群执行器单元执行作业。
这部分内容实施方式与上述方法实施例的实施方式类似,此处不再赘述。
如图6所示,一种面向多集群的协同作业方法,应用于从集群,包括如下步骤:
步骤S301:获取协同中心发送的作业描述文件,建立从集群执行器单元;
步骤S302:向注册的驱动器单元发送注册信息,完成从集群执行器单元在驱动器单元的注册;所述驱动器单元,是主集群根据协同中心的作业描述文件建立的;所述驱动器单元的注册,是根据协同中心发送的驱动器单元注册信息,在协同中心完成的注册;
步骤S303:获取主集群发送的作业,并通过从集群执行器单元执行作业。
这部分内容实施方式与上述方法实施例的实施方式类似,此处不再赘述。
与前述一种面向多集群的协同作业方法的实施例相对应,本发明还提供了一种面向多集群的协同作业设备的实施例。
参见图7,本发明实施例提供的一种面向多集群的协同作业设备,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种面向多集群的协同作业方法。
本发明一种面向多集群的协同作业设备的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本发明一种面向多集群的协同作业设备所在任意具备数据处理能力的设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种面向多集群的协同作业方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

Claims (9)

1.一种面向多集群的协同作业方法,应用于协同中心,其特征在于包括如下步骤:
步骤S101:根据用户提交的作业状态信息,指定主集群和从集群;
步骤S102:向主集群发送作业描述文件,以使主集群建立单个驱动器单元;向从集群提交作业描述文件,以使从集群建立一组从集群执行器单元;
步骤S103:向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
协同中心向主集群发送驱动器单元注册信息的同时,还向主集群发送反向代理启动请求,并通过从集群执行器单元建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,以使从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册;
步骤S104:作业执行完成后,释放执行作业所占用的资源。
2.根据权利要求1所述的一种面向多集群的协同作业方法,其特征在于:所述步骤S101中,协同中心根据用户提交的作业状态信息判断是否单集群作业,若是,则选择单集群执行业务,执行完成后释放占用的资源,否则指定主集群和从集群,并执行步骤S102。
3.根据权利要求1所述的一种面向多集群的协同作业方法,其特征在于:所述步骤S102中,向主集群提交作业描述文件,以使主集群启动作业后,还建立了主集群执行器单元;步骤S103中,向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册后,还使主集群执行器单元向注册的驱动器单元发送注册信息,以完成主集群执行器单元在驱动器单元的注册,使注册的主集群执行器单元执行主集群发送的作业。
4.根据权利要求1所述的一种面向多集群的协同作业方法,其特征在于:所述步骤S103中,以使从集群向注册的驱动器单元发送注册信息的同时,还发送心跳报文,使得主集群根据从集群的注册信息和心跳报文判断连接是否成功,若均收到,则连接成功,发送作业;否则,连接失败,继续等待。
5.一种面向多集群的协同作业装置,包括作业接口模块、作业指派模块和资源接口模块,其特征在于:所述作业指派模块包括集群指定模块、作业描述文件下发模块、注册信息下发模块和资源释放模块;
所述作业接口模块,用于获取用户提交的作业;
所述集群指定模块,根据用户提交的作业状态信息,指定主集群和从集群;
所述作业描述文件下发模块,向主集群发送作业描述文件,以使主集群建立单个驱动器单元;向从集群提交作业描述文件,以使从集群建立一组从集群执行器单元;
所述注册信息下发模块,向主集群发送驱动器单元注册信息,以完成驱动器单元在协同中心的注册,使从集群向注册的驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册,使注册的从集群执行器单元执行主集群发送的作业;
协同中心向主集群发送驱动器单元注册信息的同时,还向主集群发送反向代理启动请求,并通过从集群执行器单元建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,以使从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册;
所述资源释放模块,用于作业执行完成后释放占用的资源;
所述资源接口模块,用于获取各集群的资源状态。
6.一种面向多集群的协同作业方法,应用于主集群,其特征在于包括如下步骤:
步骤S201:获取协同中心发送的作业描述文件,建立单个驱动器单元;
步骤S202:获取驱动器单元注册信息,完成驱动器单元在协同中心的注册,通过注册的驱动器单元,获取一组从集群执行器单元发送的注册信息,完成从集群执行器单元在驱动器单元的注册,所述从集群执行器,是从集群根据协同中心的作业描述文件建立的;
主集群获取驱动器单元注册信息的同时,还获取反向代理启动请求,通过从集群执行器单元建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,以使从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,以完成从集群执行器单元在驱动器单元的注册;
步骤S203:向注册的从集群发送作业,以使注册的从集群执行器单元执行作业。
7.一种面向多集群的协同作业方法,应用于从集群,其特征在于包括如下步骤:
步骤S301:获取协同中心发送的作业描述文件,建立一组从集群执行器单元;
步骤S302:向注册的单个驱动器单元发送注册信息,完成从集群执行器单元在驱动器单元的注册;所述驱动器单元,是主集群根据协同中心的作业描述文件建立的;所述驱动器单元的注册,是根据协同中心发送的驱动器单元注册信息,在协同中心完成的注册;
从集群执行器单元基于协同中心向主集群发送反向代理启动请求,建立的反馈信息,使驱动器单元确定从集群执行器单元的建立信息,生效反向代理单元,从集群发送从集群执行器单元的地址和凭证信息,向主集群的反向代理单元进行连接,若连接成功,则向驱动器单元发送注册信息,从集群执行器单元完成在驱动器单元的注册;
步骤S303:获取主集群发送的作业,并通过从集群执行器单元执行作业。
8.一种面向多K8s集群的Spark协同计算方法,应用于协同中心,其特征在于包括如下步骤:
步骤S401:根据用户提交的计算引擎Spark的作业状态信息,指定K8s主集群和K8s从集群;
步骤S402:向K8s主集群的K8s API接口发送作业描述的Yaml文件,以使K8s主集群收到计算引擎Spark的提交请求后,调用spark-submit指令启动作业,建立单个Spark驱动器单元;向多个K8s从集群提交作业描述的Yaml文件,以使K8s从集群建立从集群Spark执行器单元;
步骤S403:向K8s主集群发送Spark驱动器单元注册信息,以完成Spark驱动器单元在协同中心的注册,使K8s从集群向注册的Spark驱动器单元发送注册信息,以完成从集群Spark执行器单元在Spark驱动器单元的注册,使注册的从集群Spark执行器单元,在Spark驱动器单元的配置下,执行K8s主集群发送的作业;
协同中心向K8s主集群发送Spark驱动器单元注册信息的同时,还向K8s主集群发送反向代理启动请求,并通过K8s从集群Spark执行器单元建立的反馈信息,使Spark驱动器单元确定K8s从集群Spark执行器单元的建立信息,生效反向代理单元,以使K8s从集群发送K8s从集群Spark执行器单元的地址和凭证信息,向K8s主集群的反向代理单元进行连接,若连接成功,则向Spark驱动器单元发送注册信息,以完成K8s从集群Spark执行器单元在Spark驱动器单元的注册;
步骤S404:作业执行完成后,释放执行作业所占用的资源。
9.一种面向多K8s集群的Spark协同计算装置,包括作业接口模块、作业指派模块和资源接口模块,其特征在于:所述作业指派模块包括K8s集群指定模块、作业描述Yaml文件下发模块、注册信息下发模块和资源释放模块;
所述作业接口模块,用于获取用户提交的作业;
所述K8s集群指定模块,根据用户提交的计算引擎Spark的作业状态信息,指定K8s主集群和K8s从集群;
所述作业描述Yaml文件下发模块,向K8s主集群的K8s API接口发送作业描述的Yaml文件,以使K8s主集群收到计算引擎Spark的提交请求后,调用spark-submit指令启动作业,建立单个Spark驱动器单元;向多个K8s从集群提交作业描述的Yaml文件,以使K8s从集群建立从集群Spark执行器单元;
所述注册信息下发模块,向K8s主集群发送Spark驱动器单元注册信息,以完成Spark驱动器单元在协同中心的注册,使K8s从集群向注册的Spark驱动器单元发送注册信息,以完成从集群Spark执行器单元在Spark驱动器单元的注册,使注册的从集群Spark执行器单元,在Spark驱动器单元的配置下,执行K8s主集群发送的作业;
协同中心向K8s主集群发送Spark驱动器单元注册信息的同时,还向K8s主集群发送反向代理启动请求,并通过K8s从集群Spark执行器单元建立的反馈信息,使Spark驱动器单元确定K8s从集群Spark执行器单元的建立信息,生效反向代理单元,以使K8s从集群发送K8s从集群Spark执行器单元的地址和凭证信息,向K8s主集群的反向代理单元进行连接,若连接成功,则向Spark驱动器单元发送注册信息,以完成K8s从集群Spark执行器单元在Spark驱动器单元的注册;
所述资源释放模块,作业执行完成后,释放执行作业所占用的资源;
所述资源接口模块,用于获取各集群的资源状态。
CN202211148298.1A 2022-09-21 2022-09-21 面向多K8s集群的Spark协同计算、作业方法及装置 Active CN115242877B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202211148298.1A CN115242877B (zh) 2022-09-21 2022-09-21 面向多K8s集群的Spark协同计算、作业方法及装置
PCT/CN2023/088148 WO2024060596A1 (zh) 2022-09-21 2023-04-13 面向多K8s集群的Spark协同作业方法及装置
US18/554,450 US11954525B1 (en) 2022-09-21 2023-04-13 Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211148298.1A CN115242877B (zh) 2022-09-21 2022-09-21 面向多K8s集群的Spark协同计算、作业方法及装置

Publications (2)

Publication Number Publication Date
CN115242877A CN115242877A (zh) 2022-10-25
CN115242877B true CN115242877B (zh) 2023-01-24

Family

ID=83681102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211148298.1A Active CN115242877B (zh) 2022-09-21 2022-09-21 面向多K8s集群的Spark协同计算、作业方法及装置

Country Status (2)

Country Link
CN (1) CN115242877B (zh)
WO (1) WO2024060596A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115242877B (zh) * 2022-09-21 2023-01-24 之江实验室 面向多K8s集群的Spark协同计算、作业方法及装置
US11954525B1 (en) 2022-09-21 2024-04-09 Zhejiang Lab Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713942A (zh) * 2012-09-28 2014-04-09 腾讯科技(深圳)有限公司 在集群中调度运行分布式计算框架的方法和***
CN103744734A (zh) * 2013-12-24 2014-04-23 中国科学院深圳先进技术研究院 一种任务作业处理方法、装置及***
CN109033000A (zh) * 2018-08-14 2018-12-18 中国计量大学 一种弹性高效的光伏云计算集群控制***及方法
CN110308984A (zh) * 2019-04-30 2019-10-08 北京航空航天大学 一种用于处理地理分布式数据的跨集群计算***
CN110347489A (zh) * 2019-07-12 2019-10-18 之江实验室 一种基于Spark的多中心数据协同计算的流处理方法
CN111767092A (zh) * 2020-06-30 2020-10-13 深圳前海微众银行股份有限公司 作业执行方法、装置、***及计算机可读存储介质
CN113014625A (zh) * 2021-02-09 2021-06-22 华控清交信息科技(北京)有限公司 一种任务处理方法、装置和用于任务处理的装置
WO2021175152A1 (zh) * 2020-03-05 2021-09-10 北京金山云网络技术有限公司 容器集群***、容器控制台和服务器
CN113835834A (zh) * 2021-09-10 2021-12-24 济南浪潮数据技术有限公司 一种基于k8s容器集群计算节点的扩容方法及***
CN115086330A (zh) * 2022-06-14 2022-09-20 亚信科技(中国)有限公司 跨集群负载均衡***
CN115086312A (zh) * 2022-05-10 2022-09-20 兴业银行股份有限公司 实现kubernetes服务跨集群通信的方法及***

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552161B2 (en) * 2017-06-21 2020-02-04 International Business Machines Corporation Cluster graphical processing unit (GPU) resource sharing efficiency by directed acyclic graph (DAG) generation
US10671445B2 (en) * 2017-12-04 2020-06-02 Cisco Technology, Inc. Cost-optimal cluster configuration analytics package
US10514958B2 (en) * 2018-02-14 2019-12-24 Capital One Services, Llc Remotely managing execution of jobs in a cluster computing framework
US11329885B2 (en) * 2018-06-21 2022-05-10 International Business Machines Corporation Cluster creation using self-aware, self-joining cluster nodes
CN114942826A (zh) * 2022-05-20 2022-08-26 阿里巴巴(中国)有限公司 跨网络多集群***及其访问方法及云计算设备
CN115242877B (zh) * 2022-09-21 2023-01-24 之江实验室 面向多K8s集群的Spark协同计算、作业方法及装置

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713942A (zh) * 2012-09-28 2014-04-09 腾讯科技(深圳)有限公司 在集群中调度运行分布式计算框架的方法和***
CN103744734A (zh) * 2013-12-24 2014-04-23 中国科学院深圳先进技术研究院 一种任务作业处理方法、装置及***
CN109033000A (zh) * 2018-08-14 2018-12-18 中国计量大学 一种弹性高效的光伏云计算集群控制***及方法
CN110308984A (zh) * 2019-04-30 2019-10-08 北京航空航天大学 一种用于处理地理分布式数据的跨集群计算***
CN110347489A (zh) * 2019-07-12 2019-10-18 之江实验室 一种基于Spark的多中心数据协同计算的流处理方法
WO2021175152A1 (zh) * 2020-03-05 2021-09-10 北京金山云网络技术有限公司 容器集群***、容器控制台和服务器
CN111767092A (zh) * 2020-06-30 2020-10-13 深圳前海微众银行股份有限公司 作业执行方法、装置、***及计算机可读存储介质
WO2022001209A1 (zh) * 2020-06-30 2022-01-06 深圳前海微众银行股份有限公司 作业执行方法、装置、***及计算机可读存储介质
CN113014625A (zh) * 2021-02-09 2021-06-22 华控清交信息科技(北京)有限公司 一种任务处理方法、装置和用于任务处理的装置
CN113835834A (zh) * 2021-09-10 2021-12-24 济南浪潮数据技术有限公司 一种基于k8s容器集群计算节点的扩容方法及***
CN115086312A (zh) * 2022-05-10 2022-09-20 兴业银行股份有限公司 实现kubernetes服务跨集群通信的方法及***
CN115086330A (zh) * 2022-06-14 2022-09-20 亚信科技(中国)有限公司 跨集群负载均衡***

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Researching a Distributed Computing Automation Platform for Big Data Processing;Nadezhda Bahareva 等;《2020 International Conference Engineering and Telecommunication (En&T)》;20210531;第1-5页 *
一种基于机器学习的Spark容器集群性能提升方法;田春岐等;《信息网络安全》;20190430(第04期);全文 *
大数据平台上的并行CART决策树算法;杜小芳 等;《西华师范大学学报(自然科学版)》;20210630;第42卷(第2期);第196-200页 *
融合多集群的ECCSSM分布式调度器研究与设计;崔翠等;《计算机应用》;20090630;全文 *

Also Published As

Publication number Publication date
CN115242877A (zh) 2022-10-25
WO2024060596A1 (zh) 2024-03-28

Similar Documents

Publication Publication Date Title
CN115242877B (zh) 面向多K8s集群的Spark协同计算、作业方法及装置
CN109104467B (zh) 开发环境构建方法、装置以及平台***和存储介质
CN107105009B (zh) 基于Kubernetes***对接工作流引擎的作业调度方法和装置
CN111880902A (zh) 一种pod创建方法、装置、设备及可读存储介质
WO2019184164A1 (zh) 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质
CN103064742A (zh) 一种hadoop集群的自动部署***及方法
CN109284184A (zh) 一种基于容器化技术的分布式机器学习平台的搭建方法
CN102521044A (zh) 一种基于消息中间件的分布式任务调度方法及***
CN107479984B (zh) 基于消息的分布式空间数据处理***
CN110597634B (zh) 一种数据处理方法、装置及计算机可读存储介质
WO2021143590A1 (zh) 一种分布式容器镜像构建调度***及方法
CN112068847B (zh) 基于kubernets平台的计算环境部署方法及装置
JPWO2014171130A1 (ja) 情報処理システム、配備方法、処理装置、及び、配備装置
CN113312059A (zh) 一种服务处理***、方法及云原生***
CN110782040A (zh) 一种pytorch任务训练方法、装置、设备及介质
US11954525B1 (en) Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters
CN108234215B (zh) 一种网关的创建方法、装置、计算机设备及存储介质
US10469374B2 (en) Multiple provider framework for virtual switch data planes and data plane migration
JP6312139B2 (ja) 動的制御システム及び動的制御方法
CN115640096A (zh) 基于kubernetes的应用管理方法、装置和存储介质
CN114095343A (zh) 基于双活***的容灾方法、装置、设备及存储介质
CN102981889A (zh) 虚拟机创建方法和装置
TWI795262B (zh) 高可用服務之部署系統、方法及其電腦可讀媒介
CN113407384B (zh) peer节点指令传输的方法、装置、代理服务器及存储介质
JPS6077258A (ja) 計算機ネツトワ−クシステムにおける負荷分散処理方式

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
GR01 Patent grant
GR01 Patent grant