CN115934286A - 一种用于轻客户端的Spark作业提交方法和系统 - Google Patents
一种用于轻客户端的Spark作业提交方法和系统 Download PDFInfo
- Publication number
- CN115934286A CN115934286A CN202211667536.XA CN202211667536A CN115934286A CN 115934286 A CN115934286 A CN 115934286A CN 202211667536 A CN202211667536 A CN 202211667536A CN 115934286 A CN115934286 A CN 115934286A
- Authority
- CN
- China
- Prior art keywords
- job
- service
- spark
- haproxy
- request
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公开了用于轻客户端的Spark作业提交方法和系统,包括动态代理接收到前端用户发送的作业处理请求,选择第一后端服务处理请求;第一后端服务将请求写入消息队列,通知前端用户请求提交成功进入调度队列等待处理;集群中空闲的第二后端服务从消息队列中获取请求,第二后端服务利用Spark驱动进程调用集执行器对请求进行调度执行,定时将处理进度、结果和采样数据写入NoSQL数据库;前端用户接收到请求提交成功信息后向动态代理发送获取实时进度和处理结果的请求,动态代理根据请求信息,选择第三后端服务处理,从数据库中获取实时进度和处理结果返回前端用户。本申请能够减轻边缘节点服务器的资源使用负担,降低故障发生频率,高效地实现轻客户端的交互效果。
Description
技术领域
本发明涉及大数据处理的技术领域,尤其是一种用于轻客户端的Spark作业提交方法和系统。
背景技术
YARN是一种统一资源管理机制,其上可以运行多套计算框架。Spark作为最常用的大数据计算框架之一,其Spark on YARN运行模式借助YARN良好的弹性资源管理机制,使得用户在YARN集群中运行的服务和资源能够被完全隔离,得以管理同时运行在集群中的多个任务。
YARN集群环境中每个应用实例都有一个Application Master进程,负责向集群资源管理器请求Container资源。Spark运行时架构主要由Driver和Executor两个重要部件组成,Driver负责作业调度,Executor负责执行具体的计算任务。Spark on YARN根据SparkDriver和Application Master在运行时所处的相对位置可分为两种模式:YARN-Client模式和YARN-Cluster模式。
在Yarn-Client模式下,Spark Driver单独运行在集群边缘节点服务器,通过与部署在YARN集群上的Application Master进行通信,申请Container资源并启动SparkExecutor执行具体任务,二者分属集群内外两个不同进程。运行过程中,前端用户可以与Spark Driver保持在线连接,进行更多交互操作,适合处理交互类型的Spark作业。
在Yarn-Cluster模式下,Spark Driver运行在YARN集群上的Application Master中,共享同一个Container进程,任务提交后Spark Driver就断开与前端用户的连接,其生命周期由YARN控制,不适合运行交互类型的作业。
为了满足与前端用户之间的频繁交互需求,实现Spark on Yarn运行模式下Spark作业生命周期的自主控制,常见的解决方案是,在集群边缘服务器上部署Yarn-Client模式的Web服务,通过Web API接收并处理前端用户发送的Spark作业请求。由于Spark Driver被集成在Web服务中,相当于该服务内部提供了一个Spark Session入口,Spark作业将通过此入口被提交到YARN集群上运行,其作业的运行结果也将被同步返回给前端用户,实现与前端用户的在线交互需求。
该方案存在不足之处,Yarn-Client模式下Spark Driver运行在集群边缘节点服务器上,由于Spark任务通常要处理的数据量较大且耗时较长,在Spark Executor数量较多的情况下,Spark Driver与Spark Executor(s)的交互过程会大量占用边缘节点服务器的系统资源,造成性能瓶颈,并且影响边缘节点服务器上的其他业务的正常执行。
而在Yarn-Cluster模式下,为避免前端用户直接访问集群内部节点造成安全隐患,通常需要在边缘节点服务器上部署一个Web Server服务,通过保持与集群上SparkDriver的长连接会话关系,实现前端用户与Spark的在线交互。该方案仍然无法避免与集群之间的网络连接消耗。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出了一种用于轻客户端的Spark作业提交方法和系统,以解决上述技术问题。
根据本发明的一个方面,提出了一种用于轻客户端的Spark作业提交方法,包括:
S1:响应于动态代理HAProxy接收到前端用户发送的作业处理请求,根据负载均衡策略选择第一后端服务处理作业处理请求;
S2:第一后端服务将作业处理请求写入消息队列,通知前端用户作业处理请求提交成功进入调度队列等待处理;
S3:YARN集群中其他空闲的第二后端服务从消息队列中获取到作业处理请求,第二后端服务利用Spark驱动进程调用集群中的执行器对作业处理请求进行调度执行,定时将处理进度写入NoSQL数据库,并将处理结果和采样数据写入NoSQL数据库;
S4:前端用户从S2中接收到作业处理请求提交成功的信息后向动态代理HAProxy发送获取作业实时进度和处理结果的请求信息,动态代理HAProxy根据请求信息,按照负载策略选择第三后端服务进行处理,从NoSQL数据库中获取作业实时进度和处理结果并通过动态代理HAProxy返回前端用户。
在一些具体的实施例中,还包括:
响应于动态代理HAProxy接收到前端用户发送的取消作业请求,根据负载均衡策略选择第二后端服务从NoSQL数据库中获取作业执行进度和作业当前运行时所在的后端服务信息,根据作业进度状态执行取消操作,并将作业取消结果通过动态代理HAProxy反馈至前端用户。
在一些具体的实施例中,根据作业进度状态执行取消操作包括:
响应于作业执行进度不存在,删除消息队列中作业信息;
响应于作业执行进度已完成,标记作业已取消;
响应于作业执行进度未完成,将取消作业的请求信息转发到作业运行时所在的第一后端服务处理,第一后端服务通过Spark驱动进程向集群提交作业取消指令,将NoSQL数据库中的作业执行进度变更为取消,标记作业已取消并将取消结果反馈给第二后端服务。
在一些具体的实施例中,通过动态代理服务屏蔽前端用户与YARN集群之间的直接交互访问。
在一些具体的实施例中,动态代理服务具体包括:
在YARN集群边缘节点服务器上启动Launcher服务,启动并保持一或多个轻量级Web应用服务,Launcher配置用于监听并保证在YARN集群中始终能运行一或多个轻量级Web应用服务;
启动成功的轻量级Web应用服务将其所在IP和监听窗口通过HAProxy动态配置接口注册至HAProxy后端配置中;
HAProxy动态配置接口根据最新配置动态重载HAProxy,对外提供统一代理服务,将Spark相关请求转发至分散在YARN集群中的轻量级Web应用服务上进行处理。
在一些具体的实施例中,在YARN集群边缘节点服务器上启动Launcher服务具体包括:
Launcher服务定期通过HAProxy动态配置接口获取HAProxy当前已配置的轻量级Web应用服务后端服务接口;
Launcher服务与轻量级Web应用服务通信,检查所有后端服务的有效性,响应于当前有效的轻量级Web应用服务数量N小于实际需要启动的服务数量M,则通过Spark on Yarn的Cluster模式启动M-N的轻量级Web应用服务;
Launcher服务通过HAProxy动态配置接口将无效轻量级Web应用服务从HAProxy配置中删除。
根据本发明的第二方面,提出了一种计算机可读存储介质,其上存储有一或多个计算机程序,该一或多个计算机程序被计算机处理器执行时实施上述任一项的方法。
根据本发明的第三方面,提出了一种用于轻客户端的Spark作业提交系统,系统包括:
轻量级Web应用服务,内部集成执行引擎Spark驱动进程,通过Spark on Yarn的Cluster模式运行在YARN集群内部,通过Spark驱动进程调度执行器完成Spark
作业的执行请求操作;
动态代理HAProxy,部署于YARN集群的边缘服务器节点上,代理前端用户发5送的Spark作业操作请求,根据负载均衡策略发送到分散在后端YARN集群上的轻
量级Web应用服务上进行对应处理;
消息队列,轻量级Web应用服务接收到Spark作业提交请求后直接将其写入轻
量级的消息队列服务,排队等待处理;
NoSQL数据库,用于保存和更新Spark作业执行进度,并在作业运行完毕后保0存采样数据或结果数据,向前端用户展示。
在一些具体的实施例中,还包括HAProxy动态配置接口,轻量级Web应用服务启动成功后,将其监听的IP地址和端口通过HAProxy动态配置接口动态注册到HAProxy代理配置中,HAProxy动态配置接口根据配置变更情况自动重载HAProxy服务,使前端用户在无感知的情况下访问所有后端服务。
5在一些具体的实施例中,还包括Launcher服务,用于监听并保证在YARN集群
中始终能够运行一或多个轻量级Web应用服务;将失效的轻量级Web应用服务接口从HAProxy动态配置接口中动态删除。
在一些具体的实施例中,响应于当前有效的轻量级Web应用服务数量N小于实
际需要启动的服务数量M,则通过Spark on Yarn的Cluster模式启动M-N的轻量级0Web应用服务。
本发明提出了一种用于轻客户端的Spark作业提交方法和系统,通过轻量级Web应用框架集成Spark Driver能力,采用Yarn-Cluster模式将多个无差别的Web服务部署到资源充足的YARN集群上,分散运行,并行调度,能够减轻边缘节点服务器的资
源使用负担,降低故障发生频率。通过代理组件实现的动态配置更新与自动重载机制,5代理后端的多个无差别Web服务,对外提供统一的服务访问接口,能够在用户对后
端无感知的情况下,接收和分发Spark作业的交互式提交请求,完成Spark作业的生命周期管理。代理组件仅提供Spark请求信息和结果数据的高性能代理和转发功能,无需在边缘节点服务器与集群之间保持长连接会话关系,具体请求由后端Web服务之间自动协作完成,能够高效地实现轻客户端的交互效果。
附图说明
包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例的用于轻客户端的Spark作业提交方法的流程图;
图2是本申请的一个具体的实施例的提交作业流程图;
图3是本申请的一个具体的实施例的取消作业流程图;
图4是本申请的一个具体的实施例的动态代理服务处理流程图;
图5是本申请的一个实施例的用于轻客户端的Spark作业提交系统的框架图;
图6是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了根据本申请的实施例的用于轻客户端的Spark作业提交方法的流程图。如图1所示,该方法包括:
S101:响应于动态代理HAProxy接收到前端用户发送的作业处理请求,根据负载均衡策略选择第一后端服务处理作业处理请求。
S102:第一后端服务将作业处理请求写入消息队列,通知前端用户作业处理请求提交成功进入调度队列等待处理。
S103:YARN集群中其他空闲的第二后端服务从消息队列中获取到作业处理请求,第二后端服务利用Spark驱动进程调用集群中的执行器对作业处理请求进行调度执行,定时将处理进度写入NoSQL数据库,并将处理结果和采样数据写入NoSQL数据库。
S104:前端用户从S102中接收到作业处理请求提交成功的信息后向动态代理HAProxy发送获取作业实时进度和处理结果的请求信息,动态代理HAProxy根据请求信息,按照负载策略选择第三后端服务进行处理,从NoSQL数据库中获取作业实时进度和处理结果并通过动态代理HAProxy返回前端用户。
在具体的实施例中,通过动态代理服务屏蔽前端用户与YARN集群之间的直接交互访问,动态代理服务具体包括:在YARN集群边缘节点服务器上启动Launcher服务,启动并保持一或多个轻量级Web应用服务,Launcher配置用于监听并保证在YARN集群中始终能运行一或多个轻量级Web应用服务;启动成功的轻量级Web应用服务将其所在IP和监听窗口通过HAProxy动态配置接口注册至HAProxy后端配置中;HAProxy动态配置接口根据最新配置动态重载HAProxy,对外提供统一代理服务,将Spark相关请求转发至分散在YARN集群中的轻量级Web应用服务上进行处理。
在具体的实施例中,在YARN集群边缘节点服务器上启动Launcher服务具体包括:Launcher服务定期通过HAProxy动态配置接口获取HAProxy当前已配置的轻量级Web应用服务后端服务接口;Launcher服务与轻量级Web应用服务通信,检查所有后端服务的有效性,响应于当前有效的轻量级Web应用服务数量N小于实际需要启动的服务数量M,则通过Sparkon Yarn的Cluster模式启动M-N的轻量级Web应用服务;Launcher服务通过HAProxy动态配置接口将无效轻量级Web应用服务从HAProxy配置中删除。
在一个具体的实施例中,还包括取消作业:
响应于动态代理HAProxy接收到前端用户发送的取消作业请求,根据负载均衡策略选择第二后端服务从NoSQL数据库中获取作业执行进度和作业当前运行时所在的后端服务信息,根据作业进度状态执行取消操作,并将作业取消结果通过动态代理HAProxy反馈至前端用户。根据作业进度状态执行取消操作包括:
响应于作业执行进度不存在,删除消息队列中作业信息;
响应于作业执行进度已完成,标记作业已取消;
响应于作业执行进度未完成,将取消作业的请求信息转发到作业运行时所在的第一后端服务处理,第一后端服务通过Spark驱动进程向集群提交作业取消指令,将NoSQL数据库中的作业执行进度变更为取消,标记作业已取消并将取消结果反馈给第二后端服务。
继续参考图2,图2示出了根据本申请的一个具体的实施例的提交作业流程图,如图2所示,前端用户Client通过动态代理HAProxy提供的统一访问接口,提交Spark作业Job到后端YARN集群的Spring Boot服务上执行,并可异步获取作业的执行进度和处理结果。该流程主要包括以下步骤:
(1)Client向HAProxy统一访问接口发送Job处理请求。
(2)HAProxy接收到Job处理请求后,根据负载均衡策略选择一个后端服务(如:Spring Boot 1)处理当前请求。
(3)Spring Boot 1服务直接将Job处理请求信息写入消息队列,通知前端用户该Job提交成功,已进入调度队列等待后续处理。
(4)YARN集群中其它空闲的后端服务(如:Spring Boot 2)从消息队列中获取到Job处理请求信息。
(5)Spring Boot 2利用该服务内部集成的Spark Driver调用集群中的SparkExecutor(s)对Job进行调度执行。
(6)Spring Boot 2定时将Job处理进度写入NoSQL数据库,并将Job的最终处理结果和采样数据写入NoSQL数据库。
(7)Client从步骤(3)接收到Job提交成功的信息后,向HAProxy统一访问接口发送获取Job实时进度和处理结果的请求信息。
(8)HAProxy将获取Job进度和结果请求信息,按照负载均衡策略选择一个后端服务(如:Spring Boot 3)进行处理。
(9)Spring Boot 3接收到请求信息后,从NoSQL数据库中获取Job实时进度和处理结果,并经HAProxy返回给前端用户,完成此次作业的提交过程。
继续参考图3,图3示出了根据本申请的一个具体的实施例的取消作业流程图,如图3所示,Spark作业Job被提交到集群上的Spring Boot服务后,由于某种原因,前端用户需要提前终止作业执行,此时可通过HAProxy提供的统一访问接口,及时撤销Spark作业。该流程主要包括以下步骤:
1.前端用户向HAProxy统一访问接口提交取消Job的请求。
2.HAProxy按照负载均衡策略将请求分发到后端服务(如:Spring Boot 2)上执行。
3.Spring Boot 2从NoSQL数据库中获取Job执行进度和Job当前运行时所在的Spring Boot服务信息。
4.Spring Boot 2根据Job进度状态执行不同的取消操作。
4.1如果Job执行进度不存在,说明该Job尚未执行,Job信息仍在消息队列中,因此直接删除消息队列中的Job信息,标记Job已取消。继续执行步骤5。
4.2如果Job执行进度为已完成状态(如:成功、失败、取消等终结状态),说明该Job已执行完毕,无须处理,直接标记Job已取消。继续执行步骤5。
4.3如果Job执行进度为未完成状态,说明该Job正在执行。将取消Job的请求信息转发到Job运行时所在的后端服务(如:Spring Boot 1)进行处理。继续执行步骤4.4。
4.4Spring Boot 1利用内部集成的Spark Driver向集群提交Job取消指令,完成后将NoSQL数据库中的Job执行进度更改为取消状态,标记Job已取消,并将取消结果反馈给Spring Boot 2。
5.通过Spring Boot 2将Job取消结果通过HAProxy反馈给前端用户,结束操作。
在具体的实施例中,通过动态代理服务能够屏蔽前端用户与后端YARN集群之间的直接交互访问,保证内网安全,同时使Spark Driver能够分散运行在YARN集群上,减少集群边缘节点的运行压力,实现轻客户端服务的效果。图4示出了根据本发明的实施例的动态代理服务处理流程图,如图4所示,该动态代理服务管理的执行步骤包括:
(1)在YARN边缘节点服务器上启动Launcher服务,启动并保持一定数量的SpringBoot服务。
(1.1)Launcher服务定期通过HAProxy Data Plane API获取HAProxy当前已配置的Spring Boot后端服务接口。
(1.2)Launcher与Spring Boot服务通信,检查所有后端服务的有效性,将当前有效的Spring Boot服务数量N,与实际需要启动的服务数量M进行比较。若N<M,则通过Sparkon Yarn的Cluster模式启动足够数量(M-N)的Spring Boot服务。这些Spring Boot将以长服务的形式驻留在YARN集群上运行。
(1.3)Launcher通过HAProxy Data Plane API将无效Spring Boot服务集合从HAProxy配置中删除。
(2)启动成功的Spring Boot服务将其所在IP和监听端口通过HAProxy DataPlane API注册到HAProxy后端配置中。
(3)HAProxy Data Plane API根据最新配置动态重载HAProxy,对外提供统一代理服务,将Spark相关请求转发到分散在YARN集群中的Spring Boot服务上进行处理。
本申请中提出的轻客户端提交Spark作业的实现方法,无须在边缘节点服务器与集群节点之间保持长连接会话,可动态实现Spark on Yarn运行模式下Spark作业的异步提交,以及整个Spark作业生命周期的自主控制。采用轻量级开源应用框架Spring Boot构建Web应用服务,通过内部集成Spark Driver,以Yarn-Cluster模式将多个无差别的Web服务部署到YARN集群中运行,利用RESTful API完成Spark在线交互式作业提交请求。这些服务进程将长期驻留在集群内部,可避免因频繁申请Container资源造成的时间消耗。本申请在边缘节点服务器上部署高性能负载均衡和动态代理组件HAProxy。将Spring Boot服务所在IP地址和RESTful API端口通过HAProxy Data Plane API(HAProxy动态配置接口)实时注册到HAProxy的后端代理配置中,利用HAProxy的自动重载机制动态加载后端配置,使得前端用户能够在无感知的情况下,将Spark作业通过HAProxy统一对外接口无差别地提交到分散运行在集群上的Spring Boot服务中执行,避免外部用户直接访问集群内部节点,实现安全隔离,同时,多个Spring Boot服务之间也能够并行调度,互不干扰。
继续参考图5,图5示出了根据本发明的实施例的用于轻客户端的Spark作业提交系统的框架图,该系统架构包括:
Spring Boot(轻量级Web应用服务),内部集成执行引擎Spark Driver,通过Sparkon Yarn的Cluster模式运行在YARN集群内部,通过RESTful API接收处理请求,并在SpringBoot服务内部直接通过Spark Driver调度执行器Spark Executor(s),完成Spark作业的执行和其他相关请求操作。该服务将长期驻留在YARN集群内,能够以在线交互的方式及时处理不同类型的多项Spark作业,避免频繁启动Spark容器而造成时间消耗。
HAProxy(提供高性能负载均衡、基于TCP和HTTP应用的动态代理),部署在YARN集群的边缘服务器节点上,代理前端用户发送的Spark作业相关操作请求,根据负载均衡策略发送到分散在后端YARN集群上的Spring Boot服务上进行相应的处理。前端用户只需要通过HAProxy统一访问接口,即可无差别使用后端YARN集群上的Spring Boot服务,实现前端用户与YARN集群的安全隔离。
HAProxy Data Plane API(HAProxy动态配置接口),是一种能够实现HAProxy配置动态更新的RESTful API。Spring Boot启动成功后,将其监听的IP地址和端口通过HAProxyData Plane API动态注册到HAProxy代理配置中,HAProxy Data Plane API则根据配置变更情况自动重载HAProxy服务,使前端用户能够在无感知的情况下,访问所有后端服务。
Launcher(服务启动器),用于监听并保证在YARN集群中始终能够运行一定数量的Spring Boot服务。Launcher会将失效的Spring Boot服务接口从HAProxy Data Plane API中动态删除。当YARN集群上Spring Boot服务数量不足时,Launcher会启动新的SpringBoot服务,直到满足数量要求。
消息队列。Spring Boot服务接收到Spark作业提交请求后直接将其写入轻量级的消息队列服务,排队等待处理,实现前端用户请求与后端执行引擎的解耦与异步化。
NoSQL数据库,用于保存和更新Spark作业执行进度,并在作业运行完毕后保存一定数量的采样数据或结果数据,用于前端用户展示。
下面参考图6,其示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于动态代理HAProxy接收到前端用户发送的作业处理请求,根据负载均衡策略选择第一后端服务处理作业处理请求;第一后端服务将作业处理请求写入消息队列,通知前端用户作业处理请求提交成功进入调度队列等待处理;YARN集群中其他空闲的第二后端服务从消息队列中获取到作业处理请求,第二后端服务利用Spark驱动进程调用集群中的执行器对作业处理请求进行调度执行,定时将处理进度写入NoSQL数据库,并将处理结果和采样数据写入NoSQL数据库;前端用户接收到作业处理请求提交成功的信息后向动态代理HAProxy发送获取作业实时进度和处理结果的请求信息,动态代理HAProxy根据请求信息,按照负载策略选择第三后端服务进行处理,从NoSQL数据库中获取作业实时进度和处理结果并通过动态代理HAProxy返回前端用户。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种用于轻客户端的Spark作业提交方法,其特征在于,包括:
S1:响应于动态代理HAProxy接收到前端用户发送的作业处理请求,根据负载均衡策略选择第一后端服务处理所述作业处理请求;
S2:所述第一后端服务将所述作业处理请求写入消息队列,通知所述前端用户所述作业处理请求提交成功进入调度队列等待处理;
S3:YARN集群中其他空闲的第二后端服务从所述消息队列中获取到所述作业处理请求,所述第二后端服务利用Spark驱动进程调用集群中的执行器对所述作业处理请求进行调度执行,定时将处理进度写入NoSQL数据库,并将处理结果和采样数据写入所述NoSQL数据库;
S4:所述前端用户从所述S2中接收到所述作业处理请求提交成功的信息后向所述动态代理HAProxy发送获取作业实时进度和处理结果的请求信息,所述动态代理HAProxy根据所述请求信息,按照负载策略选择第三后端服务进行处理,从所述NoSQL数据库中获取作业实时进度和处理结果并通过所述动态代理HAProxy返回所述前端用户。
2.根据权利要求1所述的用于轻客户端的Spark作业提交方法,其特征在于,还包括:
响应于动态代理HAProxy接收到前端用户发送的取消作业请求,根据负载均衡策略选择第二后端服务从所述NoSQL数据库中获取作业执行进度和作业当前运行时所在的后端服务信息,根据作业进度状态执行取消操作,并将作业取消结果通过所述动态代理HAProxy反馈至所述前端用户。
3.根据权利要求2所述的用于轻客户端的Spark作业提交方法,其特征在于,所述根据作业进度状态执行取消操作包括:
响应于所述作业执行进度不存在,删除消息队列中作业信息;
响应于所述作业执行进度已完成,标记作业已取消;
响应于所述作业执行进度未完成,将取消作业的请求信息转发到作业运行时所在的第一后端服务处理,所述第一后端服务通过Spark驱动进程向集群提交作业取消指令,将所述NoSQL数据库中的作业执行进度变更为取消,标记作业已取消并将取消结果反馈给所述第二后端服务。
4.根据权利要求3所述的用于轻客户端的Spark作业提交方法,其特征在于,通过动态代理服务屏蔽所述前端用户与所述YARN集群之间的直接交互访问。
5.根据权利要求4所述的用于轻客户端的Spark作业提交方法,其特征在于,所述动态代理服务具体包括:
在所述YARN集群边缘节点服务器上启动Launcher服务,启动并保持一或多个轻量级Web应用服务,所述Launcher配置用于监听并保证在所述YARN集群中始终能运行一或多个轻量级Web应用服务;
启动成功的轻量级Web应用服务将其所在IP和监听窗口通过HAProxy动态配置接口注册至HAProxy后端配置中;
HAProxy动态配置接口根据最新配置动态重载HAProxy,对外提供统一代理服务,将Spark相关请求转发至分散在所述YARN集群中的轻量级Web应用服务上进行处理。
6.根据权利要求5所述的用于轻客户端的Spark作业提交方法,其特征在于,在所述YARN集群边缘节点服务器上启动Launcher服务具体包括:
所述Launcher服务定期通过所述HAProxy动态配置接口获取所述HAProxy当前已配置的轻量级Web应用服务后端服务接口;
所述Launcher服务与所述轻量级Web应用服务通信,检查所有后端服务的有效性,响应于当前有效的轻量级Web应用服务数量N小于实际需要启动的服务数量M,则通过Spark onYarn的Cluster模式启动M-N的轻量级Web应用服务;
所述Launcher服务通过所述HAProxy动态配置接口将无效轻量级Web应用服务从HAProxy配置中删除。
7.一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施权利要求1至6任一项所述的方法。
8.一种用于轻客户端的Spark作业提交系统,其特征在于,所述系统包括:
轻量级Web应用服务,内部集成执行引擎Spark驱动进程,通过Spark on Yarn的Cluster模式运行在YARN集群内部,通过所述Spark驱动进程调度执行器完成Spark作业的执行请求操作;
动态代理HAProxy,部署于所述YARN集群的边缘服务器节点上,代理前端用户发送的Spark作业操作请求,根据负载均衡策略发送到分散在后端YARN集群上的所述轻量级Web应用服务上进行对应处理;
消息队列,所述轻量级Web应用服务接收到Spark作业提交请求后直接将其写入轻量级的消息队列服务,排队等待处理;
NoSQL数据库,用于保存和更新Spark作业执行进度,并在作业运行完毕后保存采样数据或结果数据,向所述前端用户展示。
9.根据权利要求8所述的用于轻客户端的Spark作业提交系统,其特征在于,还包括HAProxy动态配置接口,所述轻量级Web应用服务启动成功后,将其监听的IP地址和端口通过所述HAProxy动态配置接口动态注册到HAProxy代理配置中,所述HAProxy动态配置接口根据配置变更情况自动重载HAProxy服务,使所述前端用户在无感知的情况下访问所有后端服务。
10.根据权利要求9所述的用于轻客户端的Spark作业提交系统,其特征在于,还包括Launcher服务,用于监听并保证在所述YARN集群中始终能够运行一或多个轻量级Web应用服务;将失效的轻量级Web应用服务接口从所述HAProxy动态配置接口中动态删除。
11.根据权利要求10所述的用于轻客户端的Spark作业提交系统,其特征在于,响应于当前有效的轻量级Web应用服务数量N小于实际需要启动的服务数量M,则通过Spark onYarn的Cluster模式启动M-N的轻量级Web应用服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211667536.XA CN115934286A (zh) | 2022-12-23 | 2022-12-23 | 一种用于轻客户端的Spark作业提交方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211667536.XA CN115934286A (zh) | 2022-12-23 | 2022-12-23 | 一种用于轻客户端的Spark作业提交方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934286A true CN115934286A (zh) | 2023-04-07 |
Family
ID=86557258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211667536.XA Pending CN115934286A (zh) | 2022-12-23 | 2022-12-23 | 一种用于轻客户端的Spark作业提交方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934286A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737512A (zh) * | 2023-08-14 | 2023-09-12 | 杭州玳数科技有限公司 | 一种基于Spark的离线任务执行进度计算与获取方法及装置 |
-
2022
- 2022-12-23 CN CN202211667536.XA patent/CN115934286A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737512A (zh) * | 2023-08-14 | 2023-09-12 | 杭州玳数科技有限公司 | 一种基于Spark的离线任务执行进度计算与获取方法及装置 |
CN116737512B (zh) * | 2023-08-14 | 2023-11-10 | 杭州玳数科技有限公司 | 一种基于Spark的离线任务执行进度计算与获取方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10275851B1 (en) | Checkpointing for GPU-as-a-service in cloud computing environment | |
US9268654B2 (en) | Centralized execution of snapshot backups in a distributed application environment | |
US10262390B1 (en) | Managing access to a resource pool of graphics processing units under fine grain control | |
AU2014324086B2 (en) | Virtual computing systems and methods | |
US10109030B1 (en) | Queue-based GPU virtualization and management system | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
US20190155660A1 (en) | Scheduling system for computational work on heterogeneous hardware | |
AU2014324086A1 (en) | Virtual computing systems and methods | |
US20090113457A1 (en) | Performing requested commands for model-based applications | |
CN110471777B (zh) | 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统 | |
US9407669B1 (en) | Communications pacing | |
CN115934286A (zh) | 一种用于轻客户端的Spark作业提交方法和系统 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及系统 | |
CN110737510B (zh) | 块设备管理系统 | |
CN110659131A (zh) | 任务处理方法、电子装置、计算机设备及存储介质 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CA3023518C (en) | Dynamic deactivation of cold database in database service | |
US8442939B2 (en) | File sharing method, computer system, and job scheduler | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
KR102341376B1 (ko) | 딥러닝 프라이빗 클라우드 서비스의 계층 전환 장치 | |
CN113760638A (zh) | 一种基于kubernetes集群的日志服务方法和装置 | |
US8788601B2 (en) | Rapid notification system | |
WO2015111067A1 (en) | Dynamically patching kernels using storage data structures | |
US20110246553A1 (en) | Validation of internal data in batch applications | |
CN112448977A (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 |