打破资源边界、告别资源浪费: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



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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
26
26
2
272
分享
相关文章
挑战杯专属支持资源|阿里云-AI大模型算力及实验资源丨云工开物
阿里云发起的“云工开物”高校支持计划,助力AI时代人才培养与科研创新。为“挑战杯”参赛选手提供专属算力资源、AI模型平台及学习训练资源,包括300元免费算力券、百炼大模型服务、PAI-ArtLab设计平台等,帮助学生快速掌握AI技能并构建优秀作品,推动产学研融合发展。访问链接领取资源:https://university.aliyun.com/action/tiaozhanbei。
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
110 9
ACK AI Profiling:从黑箱到透明的问题剖析
本文从一个通用的客户问题出发,描述了一个问题如何从前置排查到使用AI Profiling进行详细的排查,最后到问题定位与解决、业务执行过程的分析,从而展现一个从黑箱到透明的精细化的剖析过程。
AI-Compass宝藏资源库:构建最全面的AI学习
AI-Compass宝藏资源库:构建最全面的AI学习
通义灵码 AI IDE 上线!智能体+MCP 从手动调用工具过渡到“AI 主动调度资源”
编程智能体与 MCP 的结合,不只是“工具+助手”,而是一次范式上的跃迁——从“手动调用工具”过渡到“AI 主动调度资源”。
Spark-TTS: AI语音合成的"变声大师"
Spark-TTS 是一款革命性的语音合成模型,被誉为“变声大师”。它通过创新的 BiCodec 技术将语音分解为语义和全局两种 Token,实现对音色、性别、语速等属性的精细控制。结合统一的 LLM 架构,Spark-TTS 简化了传统 TTS 的复杂流程,同时提供了前所未有的灵活性。此外,团队还发布了 VoxBox 开源数据集,为行业提供标准评估基准。尽管在零样本场景下仍存改进空间,但 Spark-TTS 已经开启了语音合成新时代,让个性化、可控的 AI 语音成为可能。
246 4
突破地域限制,实现算力无限供给 —阿里云ACK One注册集群开启多地域Serverless算力调度
本文介绍了阿里云ACK One注册集群多地域Serverless算力调度解决方案,解决传统数据中心在AI时代面临的算力不足问题。方案通过分钟级接入、100%兼容Kubernetes操作及云上Serverless弹性,实现跨地域弹性算力供给,支持高并发请求与模型快速迭代。文中详细描述了快速接入步骤、指定地域调度及动态调度方法,并提供了相关代码示例。该方案助力企业实现AI推理服务的规模化部署,提升商业落地效率。

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问