随着 Kubernetes 作为 AI、大数据和高性能批量计算的下一代基础设施的趋势逐渐清晰,越来越多的企业对 Kubernetes 在深度学习、科学计算、高性能渲染等方面提出了更高的要求。

项目挑战

原生 Kubernetes 作为通用的容器调度方案,仍与高性能计算场景下业务调度诉求存在一定差距,主要体现在:

待完善作业视角调度能力

Kubernetes 本身是以资源视角进行资源调度,Pod 作为基本的调度单元存在。Kubernetes 采用依次调度的方式实现对每个容器的调度管理,缺乏业务的作业视角进行调度的能力。

在大数据、人工智能、高性能计算的应用场景下,往往需要多个容器同时配合执行计算。而 Kubernetes 原生的依次调度方式,完全无法满足大数据、人工智能场景下的调度需求。

例如,某个大数据应用需要跑1个 Driver 容器+10个 Executor 容器。如果容器以顺序的方式一个一个进行调度,在启动最后一个 Executor 容器时,由于资源不足而调度失败,最终造成服务无法启动。虽然,前面创建好的9个 Executor 容器运行正常,但平台无法提供该大数据应用的正常服务,从资源占用上来看也是一种浪费情况。

或者,当同时提交多个作业任务后,可能会因为资源不足而造成死锁,进而导致集群实际资源被占满,最终造成所有作业任务都无法运行的最坏情况。

待实现 GPU 资源共享切分

由于开源的 Kubernetes 本身对 GPU 提供的管理能力比较弱,无法实现 GPU共享按需调度的能力要求。

  • 每个容器可以请求一个或多个 GPU,不支持 GPU 的资源切分

  • K8S 节点必须预装相应的驱动程序

  • 必须预装 nvidia-docker 程序

在容器中,要想调用 NVIDIA 的 GPU ,需要通过 nvidia-docker 调用。nvidia-docker 是一个可以使用 GPU 的 docker,它在 docker 上做了一层封装,通过 nvidia - docker - plugin 将 GPU 调用到 docker 上。

从 K8S 1.8版本后,推荐使用 Device - Plugins 方式来调用 GPU 。

待增加大数据等场景基因

Kubernetes 的核心工作负载面向无状态应用、微服务应用等互联网类应用进行设计,对水平伸缩、滚动升级有支持比较好。而到了大数据和高性能计算领域,想直接使用 Kubernetes 完成相应的作业和任务是非常困难。

待完善传统方案资源隔离性

随着 Hadoop 生态崛起后,在资源的隔离方面 Yarn 就开始使用 cgroup 用来实现对 CPU 资源隔离管理,借助 JVM 的内存隔离机制从而实现对内存资源隔离管理;对于磁盘 IO 和网络 IO 的隔离,目前社区还在讨论中;对于文件系统环境的隔离,始终也无法做到完整的文件系统隔离方案。

从整体上看,Yarn 的资源隔离能力比较弱,这就造成了当多个任务运行到同一个工作节点上时,不同任务之间会存在资源抢占的问题,不同任务之间相互影响。

待增强弹性 按需扩容

大数据应用的高峰往往有明显的周期性特征。例如,实时计算资源消耗主要在白天。但大数据资源管理平台普遍缺乏弹性管理能力,无法按应用所需进行快速扩容,为了应对业务高峰和突发的计算任务,只能通过预留出足够多的资源方式来保证作业任务能够正常运行。

解决方案

从2020年开始,越来越多的大数据、高性能计算等业务开始往 K8S 迁移。博云智能算力引擎,通过引入组调度、公平调度等方式,实现了面向作业进行调度,解决原生 K8S 调度器面向 Pod 调度的问题;通过引入CNCF批量计算项目volcano,实现大数据生态作业、队列管理能力;通过引入博云容器云平台,实现了 GPU 调度能力、资源隔离和资源抽象化供给能力。从而,进一步加强容器作为资源平台的能力形成,为大数据、人工智能、高性能计算等场景提高算力服务做好了准备。

博云智能算力引擎整体由三部分组成:

  • 业务层:由业务软件来调用博云智能算力引擎的接口,达到作业任务的批量计算和编排调度的管理要求;

  • 调度层:由博云智能算力引擎来提供整体的调度、运算等服务能力;

  • 资源层:由大量物理机或虚拟机为博云的企业级 K8S 集群提供为计算赋能。

实现灵活的作业调度算法

基于以下原则对作业进行排队,提升整个集群的资源利用率和作业吞吐量。

  • 集群资源使用情况

  • 作业提交时间

  • 作业资源申请量

  • 作业优先级

  • 作业排他性

  • 作业防饿死

实现 GPU 多维调度能力

平台实现了 GPU 的统一管理、多维隔离、资源共享等调度能力。支持多个节点可以配置不同数量、不同类型的 GPU 卡,实现统一 GPU 卡管理;支持租户或namespace 级别的 GPU 资源隔离,支持按照 GPU 卡类型进行隔离;支持多个业务共享 GPU 卡,支持 GPU 显存隔离,提升 GPU 卡资源利用率。

实现基于 MPI 类型作业

一般一个运行的 MPI 作业,由 master/worker 两部分组成,master 负责启动 mpirun 命令,worker 负责执行真正的计算作业。

平台通过对多个 pod 模板定义设置,实现分别对应 master/worker 的定义。借助 gang scheduling,保证作业中的所有 pod 能够同时启动,已实现作业的管理。支持作业生命周期管理功能,当 mpirun 结束时,结束整个任务。

实现基于 Spark 框架作业

自 Spark 2.3版本开始,原生支持在 Kubernetes 中部署。

借助容器的优势,将运行时打包进镜像中,可以加快分发速度并提升可移植性。借助 Kubernetes 的优势,能够实现容器化应用的快速部署、弹性扩容、性能监控、日志收集等管理功能。

实现队列和优先级抢占

将整个集群的资源分配到不同的队列中,让不同的用户可以按需配置使用不同的队列。当某队列中资源空闲时,可以提供给另一个队列中的作业使用。

当同时运行的作业众多时,平台可以实现高优先级的作业可以抢占低优先级的作业资源,从而实现提前调度管理。同时,平台也能够避免低优先的任务“饿死”,长时间得不到运行。

实现高性能的容器网络

大数据、超算等场景下,需要在短时间启动数以千计的计算实例并运行,这就对容器网络性能提出了更高的要求。

博云自研的 BeyondFabric 网络方案,经历了5个版本的迭代,已经在众多客户生产环境中稳定运行。目前,BeyondFabric 网络方案已实现对计算业务中的启动时间、网络带宽、网络就绪时间等指标的高性能支撑。

同时,BeyondFabric 网络能够为 Windows 系统提供更优秀的容器网络性能。

实现用户资源深度隔离

在租户层面,平台提供多租户共享底层物理资源(计算、存储、网络),做到不同租户的应用、数据、虚拟网络的隔离,对于租户自有的应用,租户可以自由选择隔离或者打通。

在资源层面,Docker 在一台 Linux 上启动多个在独立沙箱内运作的应用,相互不影响。对不同容器的 CPU、内存、网络、存储、进程等进行隔离。

实现资源弹性按需扩容

弹性伸缩是容器云的一个重要特性,也是实施容器云的一个重要业务场景。借助容器云的弹性能力,实现业务高峰时的资源快速扩容,避免为应对业务高峰预留过多的资源。

应用场景

HPC 高性能计算作为传统分布式计算模式的代表,在工业仿真、视觉渲染、气象环境、石油勘探、科研课题等诸多领域依然有着广泛的应用。

随着云原生技术的爆发,Kubernetes 作为云原生应用编排、管理的工具, 被越来越多的应用所接受和选择。众多用户开始希望能将 HPC 应用迁移到容器中运行,通过 Kubernetes 强大的功能来进行作业管理。

工业仿真

某用户有大量基于 Windows 的 HPC 应用,在迁移到容器环境之前,经常遇到资源占用高,作业没有隔离,维护需要后台手动操作等情况。

伴随 HPC 应用迁移到容器云后,平台通过优化作业任务,实现缩短计算时长;平台提供健全资源隔离,降低了不同部门因提交作业所造成的数据安全风险,大大提升了运行效率。实现了单次作业提交创建实例数从原来的 300+,提升到现在 1000+,使用内存资源约 15-20T 的规模。

视觉渲染

用户当前渲染业务还是以单机服务为主,现有软件对批量计算作业调度不够灵活,对集群控制能力也比较差,作业配置、创建、释放还都是以手工操作为主。

通过对业务的容器化改造,实现资源高性能调度、秒级弹性伸缩、GPU 统一管理等能力,轻松应对大规模的渲染需求。

方案优势

博云智能算力引擎解决方案,基于容器技术实现了高性能计算场景的统一调度管理平台,方案为上层各类超算业务提供了大数据、人工智能及云原生作业编排等技术服务。该方案具有如下技术优势:

统一的资源管理

  • 支持 Linux/Windows 计算资源池

  • 支持 GPU 计算

  • 支持批次、节点组管理

  • 提升资源利用率

灵活的调度机制

  • 支持 gang-scheduling 机制

  • 支持主流的调度算法

  • 支持作业防饿死、排他性等机制

  • 提升作业吞吐率

高效的作业提交

  • 支持 HPC、大数据、人工智能等作业

  • 支持 MPI、TensorFlow 快捷提交

  • 通过 DAG 模式支持 ETL 等常规作业

  • 作业以容器运行,提升作业隔离性

多样的排队策略

  • 多队列管理,支持资源抢占

  • 支持设置优先级

  • 支持队列可视化

全面的数据可视

  • 对接 S3 等存储系统

  • 实时在线查看数据

集中的日志告警

  • 在线查看作业日志

  • 在线查看作业监控数据

  • 在线配置告警规则

完善的租户体系

  • 划分租户资源

  • 租户数据隔离

  • 操作权限审计

兼容全信创生态

  • 支持 X86、海光、ARM 平台

  • 支持中标麒麟、统信等操作系统

  • 已获取主流认证证书

总结

通过容器化技术,博云智能算力引擎解决方案充分利用容器化技术,使大数据、人工智能、高性能计算等场景在容器化技术的应用下,进一步提升了资源使用效率和降低运维管理复杂性,使云原生技术价值得到进一步释放,支撑高性能等计算场景下的企业完成数字化转型。

支持高性能计算场景,博云容器云打造智能算力引擎相关推荐

  1. 聚焦行业,赋能客户 | 博云容器云产品族五大行业解决方案发布

    " 博云作为专业的云原生厂商,经过多年来的不断积累,我们在金融.政务.制造.能源.科研及教育等行业中,持续提炼客户需求并形成针对性解决方案,为客户提供专业化的技术服务,帮助客户基于云原生技术 ...

  2. 云原生落地进入深水区,博云容器云产品族释放四大价值

    " 为业务应用创造价值,是 IT 开发和运维的最终价值体现.博云容器云产品族打造了以应用为中心的云原生操作系统,帮助企业应用管理实现"全.快.稳.省",为应用赋能! 5月 ...

  3. 博云容器云、DevOps 平台斩获可信云“技术最佳实践奖”

    7 月 21 日,2022 可信云大会在北京顺利开幕,会上中国信通院颁布了可信云最佳实践评选结果.博云容器云和博云牧繁 DevOps 平台成功入选可信云技术最佳实践云原生-容器及管理.可信云最佳实践软 ...

  4. 活动预告 | 博云容器云产品族发布会

    2022 博云容器云产品族全新发布 将以线上直播方式与大家见面 5月23日14:00 不见不散 点击立即预约 ↓

  5. 秒云容器云平台:一站式云原生PaaS平台

    本篇文章开始之前,我们以目前室内装修里比较流行的2种方式做对比,来讲一下所谓的"半包"和"全包"的区别.简单讲半包和全包的差别其实就是辅材和主材由谁提供的问题. ...

  6. 支撑1300+矿井监控,华为云数据库助力打造智能矿山

    摘要:华为云&精英数智,用数据驱动服务,让煤矿开采更安全.今天,我们守护了1300+矿井安全生产. 本文分享自华为云社区<监控不掉线,安全看得见,华为云数据库让煤矿生产更安全>,作 ...

  7. 如何提升居民幸福感?百度智能云联手北京朝阳区打造“智能城市”

    高耸林立的写字楼,玲琅满目的大卖场,各种趣味十足的新鲜事物,这是我们喜欢的城市,它给予我们幸福.但是在另一面,拥堵的交通.冷漠的陌生人群.冰冷的水泥围墙,又让居民感到困扰,幸福感下降. 在我们的幻想中 ...

  8. 云容器云引擎:容器化微服务,Istio占C位出道

    在精彩的软件容器世界中,当新项目涌现并解决你认为早已解决的问题时,这感觉就像地面在你的脚下不断地移动.在许多情况下,这些问题很久以前被解决,但现在的云原生架构正在推动着更大规模的应用程序部署,这就需要 ...

  9. mini2440+阿里云+Qt/android 打造智能音箱

    华为在2018年10月26日发布了一款音箱,AI智能音箱,载了来自猎户星空的语音合成技术.用户通过语音或者华为智能家居App,可轻松控制音箱的播放.暂停等等操作. 以华为AI智能音箱为背景,我们自己动 ...

最新文章

  1. 全球首款AI的操作系统来了!100%国产,像用Windows一样简单
  2. iOS中使用OpenGL 实现增高功能
  3. .net框架、CLR和C#的版本之间的对应关系
  4. python数字处理技巧(2): Numpy、矩阵运算、随机、字符串日期
  5. Libevent-网络服务器事件示例
  6. keras从入门到放弃(十八)批量标准化
  7. JavaScript实现eulerianPath欧拉路径算法(附完整源码)
  8. 怎么解决eclipse报PermGen space异常的问题
  9. svg 动画_svg 动画介绍(一)
  10. 标准模块 os.stat
  11. 【转】Sql递归查询
  12. Android 中 RecyclerView 的基本使用
  13. 获取ModelMap里的对象
  14. MxDraw云图平台(H5网页CAD) 2022.11.15更新
  15. 12岁的微博回港上市,还有新故事吗?
  16. mysql密码为空包密码错误_apk空包签名方法及工具
  17. debian9.6安装和卸载新立得软件包管理器
  18. SpringCloud【面试题】
  19. 唯品会定时任务组件Saturn的时间不一致bug,超时
  20. 如何css设置div页面100%高度, body页面全高

热门文章

  1. 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】
  2. NOI的1.5.39与7无关的数
  3. oracle命名规则
  4. python蜂鸣器_Micropython之蜂鸣器1
  5. UVA10118(记忆化搜索 + 好题)
  6. postman如何做接口关联
  7. Spire.PDF for Java 4.8.7 Crack
  8. Dubbo Cluster集群那点你不知道的事。
  9. FX1S控制步进电机的实例(图与程序)
  10. 读书笔记:汇编语言 第三版 王爽 清华出版社 章六 章七 章八 章九 章十