Volcano:带你体验容器与批量计算的碰撞的火花
摘要:今年(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:带你体验容器与批量计算的碰撞的火花的更多相关文章
- Volcano火山:容器与批量计算的碰撞
[摘要] Volcano是基于Kubernetes构建的一个通用批量计算系统,它弥补了Kubernetes在“高性能应用”方面的不足,支持TensorFlow.Spark.MindSpore等多个领域 ...
- 未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布
在刚刚结束的CLOUD NATIVE+ OPEN SOURCE Virtual Summit China 2020上,由华为云云原生团队主导的容器批量计算项目Volcano正式发布1.0版本,标志着V ...
- 重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目
摘要:4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目. 4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个 ...
- Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算
摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布. 本文分享自华为云社区<Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算>,作者:华为云云 ...
- 免费带你体验阿里巴巴旗舰大数据计算产品MaxCompute
什么是MaxCompute? 众所周知,MaxCompute是阿里云推出的承载EB级的数据存储能力,百PB级的单日计算能力,公共云覆盖国内外十几个国家和地区,专有云包含城市大脑在内部署超过100+套的 ...
- 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变
带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115 近期有 ...
- 【转】Alchemy的使用和多项式批量计算的优化
原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332158.html ================================== ...
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期. 这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 目录 ...
- 不需内测账号,带你体验微信小程序完整开发过程
不需内测账号,带你体验微信小程序完整开发过程 2016年09月24日 - 作者: SwiftCafe 微信小程序还没正式发布就已经迅速成为大家讨论的焦点,那么大家可能觉得只有收到内测邀请才能体验小程序 ...
- kaks calculator批量计算多个基因的选择压力kaks值
欢迎来到"bio生物信息"的世界 今天给大家带来"批量计算kaks值"的技能. 关于kaks的背景知识我就不介绍了,感兴趣的自行搜索,这里直接开始讲怎么批量计算 ...
随机推荐
- Kubernetes 中使用consul-template渲染配置
Kubernetes 中使用consul-template渲染配置 当前公司使用consul来实现服务发现,如Prometheue配置中的target和alertmanager注册都采用了consul ...
- 服务器没有开放3306端口 远程访问MySQL数据库方法
一.前言 当装有MySQL的服务器为了防止数据库被黑,提高安全性,把3306端口禁止掉,禁止对外访问,我之前写过一篇是借助跳板机的SSH隧道来访问实现安全,这种情况依然需要开放3306端口和使用一 ...
- JUC并发编程学习笔记(四)8锁现象
8锁现象 八锁->就是关于锁的八个问题 锁是什么,如何判断锁的是谁 对象.class模板 深刻理解锁 锁的东西无外乎就两样:1.同步方法的调用者,2.Class模板. 同一个锁中,只有当前线程资 ...
- 中龙技术 | HSCSEC CRY + MISC WP
CRYPTO[HSC-1th] Easy SignIn 5445705857464579517A4A48546A4A455231645457464243566B5579556C7053546C4A4E ...
- 牛客多校第五场 K King of Range
题意: 给定一个\(n\)个数得序列\(a_i\),给定\(m\)个询问,每次给出一个\(k\),寻找有多少个区间\([l, r]\)中最大值与最小值之差严格大于\(k\). 思路: 可以发现,如果已 ...
- [PostgreSQL]在group by查询下拼接列字符串
首先创建group_concat聚集函数: CREATE AGGREGATE group_concat(anyelement) ( sfunc = array_append, -- 每行的操作函数,将 ...
- 三菱PLC 轻松数采
目前市面上数采的软件有很多,但是用的最为省力最为简单的就是kepserver了,在kepserver的应用中,有对应的三菱驱动针对于三菱PLC,三菱驱动支持多个Mitsubishi 协议,包括 MEL ...
- 时间复杂度为 O(n^2) 的排序算法
对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法.因为时间复杂度并不代表实际代码的执行时间,它省去了低阶.系数和常数,仅代表的增长趋势,所以在小规模数据情况下, O(n2) 的排序算法 ...
- .NET周刊【11月第4期 2023-11-26】
国内文章 万字长文:从 C# 入门学会 RabbitMQ 消息队列编程 https://www.cnblogs.com/whuanle/p/17837034.html 如题,详细的介绍RabbitMQ ...
- 浅谈SQL优化小技巧
回顾MySQL的执行过程,帮助介绍如何进行sql优化. (1)客户端发送一条查询语句到服务器: (2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据: (3)未命中缓存后,MySQL通过 ...