打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度

简介: ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。

【阅读原文】戳:打破资源边界、告别资源浪费:ACK One多集群Spark和AI作业调度


 

概述

 

 

 

在云原生时代,随着业务的发展(如业务遍布全球、已达单一集群承载上限)、容灾需求的迫切、安全合规的要求等原因,越来越多的用户采用多Kubernetes集群来承载业务。而在Kubernetes集群中部署业务应用时,出于应用可靠性考虑,管理员通常会预留相当的资源Buffer来应对负载波动,这样就会导致大多数时间内,容器的请求资源远高于实际使用的资源,集群资源利用率低;此时,我们往往会在多集群中运行离线任务来提升资源利用率,但如何确定哪个集群具有充足资源,将离线任务调度到哪个集群,如何确保离线任务的运行不影响已运行的在线服务,则是更为重要的问题。

 

Spark作为大数据和AI领域中广泛使用的分布式计算框架,ACK One多集群AI作业调度支持Spark作业的多集群调度与分发,并结合ACK Koordinator的在离线混部的能力,可以解决上述问题,在不影响集群中正在运行的在线业务的前提下,根据各集群实际剩余资源来进行调度,最大化多集群中闲置资源的利用率。

 

 

 

 

ACK One多集群AI作业调度与分发

 

 

 

分布式云容器平台ACK One[1]是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级分布式云容器平台,提供多集群统一管理能力。通过ACK One注册集群[2]将您的其他公共云厂商和IDC K8s集群接入到阿里云容器服务ACK控制台,并由舰队对这些注册集群以及云上的ACK、ACK Edge集群进行多集群统一的应用分发、流量管理、可观测运维管理、安全管理等。

 

ACK One多集群AI作业调度与分发[3]是阿里云面向多集群和混合云场景提供的多集群AI作业调度和分发的能力。当单一ACK集群无法满足大规模AI训练和推理任务的资源需求,或当前已有的多个ACK集群有较多资源闲置时,您可以使用该能力,将任务调度到多个集群,以满足您的资源需求。具有以下能力:

 

1. 支持多种作业类型:PyTorchJob、SparkApplication、TFJob。

 

2. 多集群Gang调度:通过预占或动态资源检测,实现作业的多集群Gang调度,确保任务下发到子集群后能够调度,提升任务调度效率。

 

3. 多租户配额管理:用户可以使用ElasticQuotaTree提供的基于Namespace的资源管理,在多租户场景下限制各租户的资源使用量。

 

4. 任务优先级调度:依据用户在AI任务中的PodTemplate中定义的PriorityClass,确保高优先级任务优先获得集群资源。

 

5. 多种任务排队策略配置:您可以灵活定义各队列的排队策略,满足优先提高集群利用率或优先保证任务优先级两种使用方式,支持阻塞调度模式和非阻塞调度模式。

 

6. 作业失败后的重调度:作业在子集群中失败后,Global Scheduler将回收该作业,并对其进行重调度,调度到其他符合条件且资源充足的集群。

 

 

具体流程如下:

 

1. 舰队提交PyTorchJob、SparkApplication或TFJob等类型作业和分发策略PropagationPolicy。

 

2. 舰队对作业进行优先级调度和租户配额管理Capacity Scheduling。

 

3. 舰队中的Global Scheduler,对出队列的作业进行多集群动态资源调度和多集群Gang调度,对满足条件的集群进行资源预占或动态资源检查,调度失败则重新入队列。

 

4. 调度成功后,作业按策略分发到对应的ACK集群中。

 

5. 若作业运行失败,Global Scheduler将回收作业,并对其进行重调度,调度到其他符合条件且资源充足的集群。

 

 

 

 

基于实际剩余资源的多集群Spark作业调度与分发

 

 

 

基于集群实际剩余资源的多集群Spark作业的调度和分发方案,主要依赖以下三部分能力:

 

1. ACK One舰队的多集群Spark作业的调度和分发,包括对实际剩余资源的感知调度。

 

2. ACK Koordinator[4]的单集群在离线混部[5]能力。

 

3. ACK Spark Operator[6]支持Koordinator在离线混部特性。

 

 

基于实际剩余资源的调度

 

在单ACK集群中基于实际剩余资源的调度,即为ACK Koordinator的动态资源超卖。ACK Koordinator使用Batch的概念描述实际剩余资源,并通过Kubernetes的Extended Resource[7]将其记录在Node上。从下图我们可以看到,当基于Scheduler按照默认的Request资源进行调度时,4是闲置的资源,可新调度的资源仅有最上方的浅灰色部分;而基于Koordinator的Batch资源进行调度,则可以将闲置的资源充分利用起来(5+6)。为性能考虑,Koordinator还可以设置一定的比例的预留资源,设置方式可详见ACK Koordinator启用动态资源超卖[8]

 

 

依据ACK Koordinator的该混部能力,ACK Spark Operator实现了,支持根据相应注解,将SparkApplication的driver和executor所需资源,转换为Koordiantor的Batch资源,由ACK Scheduler调度Pod时根据Batch资源进行调度。

 

在多集群维度,舰队的Gloabl Scheduler在进行多集群作业调度时,动态资源调度会动态感知子集群剩余资源,如果是Spark作业,会根据相应的注解,将为driver和executor所需资源检测各子集群的Batch资源是否充足,结合Global Scheduler的多集群Gang调度,来决定将作业分发到哪个集群中。在1.28及以上版本的ACK集群中,舰队会通过资源预占能力来提升作业调度的成功率。并且舰队的Gloabl Scheduler还会监视子集群中Spark作业运行状态,若driver因资源不足而无法运行,则在一定时间后回收该SparkApplication,并重调度到其他资源充足的子集群中。

 

 

完整方案流程

 

 

完整的基于集群实际剩余资源的多集群Spark作业的调度和分发方案流程如下:

 

1. 环境准备:

 

a. 创建ACK One舰队,并将多个ACK集群关联到舰队,由舰队统一管理;

b. 在各ACK集群中安装ACK Koordinator,并通过配置管理混部策略[9]

c. 确定要分发的SparkApplication的命名空间,在舰队和各ACK集群中创建该命名空间,并在安装ACK Spark Operator时配置为其处理的命名空间。

 

2. 在ACK One舰队中SparkApplication和PropagationPolicy,舰队的多集群调度组件(Global Scheduler)会根据每个关联子集群的实际剩余资源,来匹配Spark作业资源请求,完成调度。在1.28及以上版本的ACK集群中,舰队会通过资源预占能力来提升作业调度的成功率。

 

a. 该步骤,可同时使用PriorityClass,将提交的Spark作业设置为低优先级,以确保证提交的Spark作业不会抢占在线服务资源、影响在线服务产品的正常运行。

 

3. 舰队调度作业成功后,会将该SparkApplication分发至调度选中的ACK集群中。

 

4. 若作业运行失败,Global Scheduler将回收作业,并对其进行重调度,调度到其他符合条件且资源充足的集群。

 

另外,通过PriorityClass降低Spark作业的优先级,和ACK Koordinator自身支持QoS能力,可以确保运行的Spark作业不会影响对应集群中在线服务的正常运行。

 

 

 

 

总结

 

 

 

综上所述,ACK One多集群Spark作业的调度与分发,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。ACK One还支持PytorchJob、TFJob等其他AI作业类型的多集群调度。更多内容可详见基于实际剩余资源的多集群Spark调度最佳实践[10]ACK One多集群AI作业调度与分发[11]


欢迎加入ACK One 客户交流钉钉群,与我们一同交流。(钉钉群号:35688562

 

相关链接:

 

[1] 分布式云容器平台ACK One

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/ack-one-overview?spm=a2c4g.11186623.help-menu-85222.d_0_0.40da5219xR6Z65

 

[2] ACK One注册集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/registered-clusters/?spm=a2c4g.11186623.help-menu-85222.d_2_1.2b35378dwcWYvK

 

[3] ACK One多集群AI作业调度与分发

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/job-orchestration/?spm=a2c4g.11186623.help-menu-85222.d_2_2_6.71195e02FZkssP&scm=20140722.H_384018._.OR_help-T_cn~zh-V_1

 

[4] ACK Koordinator

https://help.aliyun.com/zh/ack/product-overview/ack-koordinator-fka-ack-slo-manager?spm=a2c4g.11186623.0.0.d82c3b9b3LPvwq#task-2172306

 

[5] 在离线混部

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/overview-of-the-colocation-of-different-types-of-workloads/

 

[6] ACK Spark Operator

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/use-cases/use-spark-operator-to-run-spark-jobs-on-ack?spm=a2c4g.11186623.help-menu-search-85222.d_1

 

[7] Extended Resource

https://kubernetes.io/docs/tasks/administer-cluster/extended-resource-node/

 

[8] ACK Koordinator启用动态资源超卖

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/dynamic-resource-overcommitment?spm=a2c4g.11186623.0.0.e64f5c3amRjfwv#2116a59cdccbf

 

[9] 管理混部策略

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/getting-started-2?spm=a2c4g.11186623.help-menu-85222.d_2_14_7_1_0.e64f5c3amRjfwv#section-038-0op-zeh

 

[10] 基于实际剩余资源的多集群Spark调度最佳实践

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/multi-cluster-spark-job-scheduling-and-distribution-based-on-actual-resource-availability?spm=a2c4g.11186623.help-menu-85222.d_2_2_6_2.7a225cb66Jo1TS#f5115a37fabz7

 

[11] ACK One多集群AI作业调度与分发

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/job-orchestration/?spm=a2c4g.11186623.help-menu-85222.d_2_2_6.5d575e02ZeVEm7&scm=20140722.H_384018._.OR_help-T_cn~zh-V_1



我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
人工智能 PyTorch 算法框架/工具
ACK AI Profiling:从黑箱到透明的问题剖析
本文从一个通用的客户问题出发,描述了一个问题如何从前置排查到使用AI Profiling进行详细的排查,最后到问题定位与解决、业务执行过程的分析,从而展现一个从黑箱到透明的精细化的剖析过程。
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
192 9
|
5月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
4月前
|
人工智能 自然语言处理 搜索推荐
Spark-TTS: AI语音合成的"变声大师"
Spark-TTS 是一款革命性的语音合成模型,被誉为“变声大师”。它通过创新的 BiCodec 技术将语音分解为语义和全局两种 Token,实现对音色、性别、语速等属性的精细控制。结合统一的 LLM 架构,Spark-TTS 简化了传统 TTS 的复杂流程,同时提供了前所未有的灵活性。此外,团队还发布了 VoxBox 开源数据集,为行业提供标准评估基准。尽管在零样本场景下仍存改进空间,但 Spark-TTS 已经开启了语音合成新时代,让个性化、可控的 AI 语音成为可能。
|
7月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
650 33
|
7月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
376 19
|
7月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
7月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
10天前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
149 10

热门文章

最新文章

推荐镜像

更多