关于后端:支持高性能计算场景博云容器云打造智能算力引擎

40次阅读

共计 3885 个字符,预计需要花费 10 分钟才能阅读完成。

随着 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 平台

反对中标麒麟、统信等操作系统

已获取支流认证证书

 

总结

通过容器化技术,博云智能算力引擎解决方案充分利用容器化技术,使大数据、人工智能、高性能计算等场景在容器化技术的利用下,进一步晋升了资源应用效率和升高运维治理复杂性,使云原生技术价值失去进一步开释,撑持高性能等计算场景下的企业实现数字化转型。

正文完
 0