摘要:今年(2020)7月初,Volcano 发布了1.0版本。1.0做为里程碑版本,在Volcano整个规划中起到了承上启下的作用。此次发布的1.0版本支持了GPU共享,作业动态扩缩容,批任务抢占等功能,并主要加强了稳定性;同时,在1.0发布后 Volcano也在线下讨论了分布式调度系统的未来发展的趋势等。

历史

在分析趋势之前,我们先看一下分布式调度系统的历史。早期分布式调度系统以批处理系统为主,例如九几年的LSF/SGE/PBS等,这些批处理系统大规划的使用在HPC领域,而且对作业级的调度进行大量的研究工作;后续由批处理系统延伸出多集群、多组织资源共享的需求,便成了网络计算。

网络计算与云计算最大的不同是:网络计算强调多组织的资源共享,而云计算强调云厂商的集中式支持;这也是云计算成为主流的主要原因:多组织之间共享需要完备的协议和足够的安全支持,而云服务仅需要对用户提供相应服务和安全,并不需要在多个云厂商之间进行共享;随着开源社区的发展,再将应用接口逐步统一,e.g. Kubernetes。Hadoop出现后,不仅推动了分布式调度系统中对数据的处理,同时也推动了开源软件的生态。2012和2014是两个重要的节点,Hadoop将资源管理层与领域框架层分开,随后的领域框架也有机会构建自己的生态,e.g. Spark;同时,将资源管理层与领域框架分开也被广泛认可。

在容器及Kuberentes流行后,凭借其高资源利用率与隔离,环境标准化等优势,越来越多的人希望将这些批量计算应用统一到 Kubernetes 平台上。

未来的趋势

多种应用统一调度

随着各行各业的发展,涌现出越来越多的领域框架来支持业务的发展;这些框架都在相应的业务领域有着不可替代的作用,e.g. Spark, Tensorflow, Flink等。在业务复杂性能不断增加的情况下,单一的领域框架很难应对现在复杂的业务场景;因此现在普遍使用多种框架达成业务目标,如下图所示。

但随着各个领域框架集群的不断扩大,以及单个业务的波动性,各个子集群的资源浪费比较严重;因此越来越多的用户希望通过统一调度系统来解决资源共享的问题。在技术选型上,Kubernetes凭借其优秀的扩展性获得大部分用户青睐。

异构硬件

在批量计算任务向云原生环境迁移的过程中,对云原生环境的算力提出了新的要求;各个厂商为了应对这些新的需求,为各个场景提供了不同架构的硬件,例如 鲲鹏,昇腾,X86,GPU等。当多种应用运行在统一平台上时,需要云原生调度系统能够对异构硬件资源进行统一的管理与调度,使用各种应用达到最优的资源配比。目前,硬件的信息通过kubernetes的 device plugin 机制提供,但Kubernetes的 device plugin 仍有一些不足,例如 无法很好的支持硬件拓扑。在调度方面 Volcano 已经支持主流的调度策略,并在最新的1.0版本中支持了 GPU 共享,大大增加了GPU的利用率,有效降低了GPU的使用成本。

跨集群/跨云

跨集群一直是分布调度系统解决大规模、灾备等问题的主要解决方案;同时,为了降低厂商绑定的风险,并最大限度兼顾不同云厂商的优势,多云环境下的负载高效分发逐渐成为趋势。在多云的环境中,面向数据位置的优化,作业执行时间预估等问题都是需要调度系统解决的问题;在 Volcano 中,将通过多个项目实现跨集群、跨云的作业调度,例如 JobForward (#880)。

智能化

调度算法在分布调度系统中有大量的研究,从早期的批处理系统到近期的Borg,Volcano等;早期的批处理系统以特定场景的算法优化为主,对于复杂的场景需要大量的计算,虽然有大量针对HPC和网络的调度优化,但常用和落地的算法比较少。随着人工智能的发展,越来越多的调度系统将会使用AI相应的能力对算法进行优化;在 Volcano 中,将通过AI的能力驱动 Volcano 中各个调度算法进行优化,并通过AI的能力提供新的调度算法。

总结

分布式调度系统是一个复杂的系统,需要多个组件共协作以提高整体的效率,例如 应用管理,调度,异构硬件管理,存储等,仅靠调度器无法完成这些工作。Volcano 作为CNCF首个面向批量计算的分布式调度系统,包含了应用管理,作业调度,异构硬件等多个组件和功能;其调度器兼容kubernetes调度策略,同时支持在线、离线两种作业类型;控制器提供了统一的作业管理,支持多种作业的接入,包括 MPI, Tensorflow, MidSpore, Spark 等;设备插件提供了对异构硬件的支持,例如 1.0 版中支持了 GPU 共享。因此,Volcano面向分布式调度系统的趋势提供了完整的方案,可以在多种场景下提高作业性能,资源使用率等。

Volcano特训营:六节课学懂容器批量计算

由Volcnao项目发起者马达主讲的直播课程正在进行中,课程共有6期,从技术原理到实战演练,涵盖Volcano全景。

锁定后续课程信息,获取往期回放与讲师PPT,请假助手微信(k8s2222)并备注“Volcano”。

点击关注,第一时间了解华为云新鲜技术~

Volcano:带你体验容器与批量计算的碰撞的火花的更多相关文章

  1. Volcano火山:容器与批量计算的碰撞

    [摘要] Volcano是基于Kubernetes构建的一个通用批量计算系统,它弥补了Kubernetes在“高性能应用”方面的不足,支持TensorFlow.Spark.MindSpore等多个领域 ...

  2. 未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布

    在刚刚结束的CLOUD NATIVE+ OPEN SOURCE Virtual Summit China 2020上,由华为云云原生团队主导的容器批量计算项目Volcano正式发布1.0版本,标志着V ...

  3. 重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目

    摘要:4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目. 4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个 ...

  4. Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

    摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布. 本文分享自华为云社区<Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算>,作者:华为云云 ...

  5. 免费带你体验阿里巴巴旗舰大数据计算产品MaxCompute

    什么是MaxCompute? 众所周知,MaxCompute是阿里云推出的承载EB级的数据存储能力,百PB级的单日计算能力,公共云覆盖国内外十几个国家和地区,专有云包含城市大脑在内部署超过100+套的 ...

  6. 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变

    带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115   近期有 ...

  7. 【转】Alchemy的使用和多项式批量计算的优化

    原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332158.html ================================== ...

  8. ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)

    前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期. 这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 目录 ...

  9. 不需内测账号,带你体验微信小程序完整开发过程

    不需内测账号,带你体验微信小程序完整开发过程 2016年09月24日 - 作者: SwiftCafe 微信小程序还没正式发布就已经迅速成为大家讨论的焦点,那么大家可能觉得只有收到内测邀请才能体验小程序 ...

  10. kaks calculator批量计算多个基因的选择压力kaks值

    欢迎来到"bio生物信息"的世界 今天给大家带来"批量计算kaks值"的技能. 关于kaks的背景知识我就不介绍了,感兴趣的自行搜索,这里直接开始讲怎么批量计算 ...

随机推荐

  1. Java IO 与 NIO:高效的输入输出操作探究

    引言 输入输出(IO)是任何编程语言中的核心概念,而在Java中,IO操作更是应用程序成功运行的基石.随着计算机系统变得越来越复杂,对IO的要求也日益增加.在本文中,我们将探讨Java IO和非阻塞I ...

  2. 【vulnhub】——DC-9靶机

    [vulnhub]--DC-9靶机 1. 主机发现 扫描kali主机C段(Kali和DC-9主机在同一个网关下): 发现主机为192.168.108.146,进行详细端口扫描: 可以看到靶机开了一个s ...

  3. SpringBoot自动配置原理解析

    1: 什么是SpringBoot自动配置 首先介绍一下什么是SpringBoot,SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,其最主要的特点是:能使程序开发 ...

  4. AtCoder Beginner Contest 321(ABC321)

    A. 321-like Checker 直接模拟. Code B. Cutoff 直接暴力枚举 \([0\sim100]\),每次把第 \(n\) 个数当作当前枚举的 \(i\),然后看看条件是否满足 ...

  5. 【scipy 基础】--插值

    插值运算是一种数据处理方法,主要用来填补数据之间的空白或缺失值.因为在实际应用中,数据往往不是完整的,而是存在着空白或缺失值,这些空白或缺失值可能是由于数据采集困难.数据丢失或数据处理错误等原因造成的 ...

  6. 2023-11-08:用go语言,字符串哈希原理和实现 比如p = 233, 也就是课上说的选择的质数进制 “ 3 1 2 5 6 ...“ 0 1 2 3 4 hash[0] = 3 * p的0

    2023-11-08:用go语言,字符串哈希原理和实现 比如p = 233, 也就是课上说的选择的质数进制 " 3 1 2 5 6 ..." 0 1 2 3 4 hash[0] = ...

  7. C语言输入任意长度数组后,再在该数组中查找特定的值,并且可查找多个相同的值

    C语言输入任意长度数组后,再在该数组中查找特定的值,并且可查找多个相同的值 例:在a[20] = { 99,42,57,74,46,85,32,78,40,33,74,88,65,27,38,69,5 ...

  8. LabVIEW基于机器视觉的实验室设备管理系统(4)

    目录 行动计划 后面板连线 初始化 ​返回 ​ 注册 账号限制 查重账号或者姓名 确认密码 注册 效果演示 我们上一期制作完了给账户修改密码,那么我们这一期就来完成账户注册这一功能.老规矩哦,先来计划 ...

  9. C语言输入一个三位的正整数,按逆序打印出该数的各位数字。

    #include <stdio.h> int main() { int n, a, b, c;//定义3位数,个位数,十位数,百位数变量 scanf_s("%d", & ...

  10. 对 .NET程序2G虚拟地址紧张崩溃 的最后一次反思

    一:背景 1. 讲故事 最近接连遇到了几起 2G 虚拟地址紧张 导致的程序崩溃,基本上 90% 都集中在医疗行业,真的很无语,他们用的都是一些上古的 XP,Windows7 x86,我也知道技术人很难 ...