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的背景知识我就不介绍了,感兴趣的自行搜索,这里直接开始讲怎么批量计算 ...
随机推荐
- EMC ndmp NAS
NAS 是带存储系统的专用高性能文件服务器.它可提供文件级数据访问和共享. NAS 使用网络和文件共享协议,包括用于数据传输的 TCP/IP 以及用于远程文件服务的 CIFS 和 NFS. 最简单的备 ...
- 16.1 Socket 端口扫描技术
端口扫描是一种网络安全测试技术,该技术可用于确定对端主机中开放的服务,从而在渗透中实现信息搜集,其主要原理是通过发送一系列的网络请求来探测特定主机上开放的TCP/IP端口.具体来说,端口扫描程序将从指 ...
- Telegram 正式引入国产小程序技术
Telegram 宣布为其开发者提供了一项"能够在 App 中运行迷你应用"的新功能( 迷你应用即 Mini App,下文中以"小程序"代替). 在一篇博客文章 ...
- mybatis 操作 mysql 动态创建数据表
Map 数据一般是根据需求生成的,例如 map.put("ticketId",176),map.put("ticketName","测试工单" ...
- SHA256算法加密工具类
代码如下,请自取 /** * @description: SHA256算法加密 * @author: luolei * @Date: 2022-10-31 17:16 */ public class ...
- 2022/07/16暑期集训考试 day1
T1 取餐号 看到数据范围 直接锁定埃氏筛和线性筛 我打的是一个优化一点的埃氏筛 #include<bits/stdc++.h> using namespace std; #define ...
- Ubuntu18虚拟机远程开发
Ubuntu18 虚拟机远程开发 1. 安装 VMware 和 Ubuntu18 虚拟机 (1)VMware 官网上下载免费版本 一路 next 安装就行(中间也许需要改一下存放路径) (2)Ubun ...
- markdown语法基本使用
markdown 语法基本使用 目录 markdown 语法基本使用 各级标题 字体 引用 分隔线 图片 列表 表格 代码 超链接 各级标题 井号加上空格,几级标题用几个井号加上空格 字体 单星号引起 ...
- C语言一个单链表L=(a1 , a2 , … , an-1 , an),其逆单链表定义为L’=( an , an-1 , … , a2 , a1),要求逆单链表仍占用原单链表的空间。
/* 开发者:慢蜗牛 开发时间:2020.6.11 程序功能:顺序输出和逆序输出 */ #include<stdio.h> #include<malloc.h> #define ...
- docker构建打包java项目
docker构建打包java项目 简介 本项目用于 研究和实践 docker的工作流部署发布 查看github源码 技术栈 spring-web (RESTAPI 请求交互) redis (用于实验 ...