什么是计算云?
所谓的计算云指的是为计算业务优化的类云基础架构,它强调用云的方式解决计算问题,而不是将“计算”搬到现有的公有云或者容器云上。
目前公有云或者容器云(例如k8s)上的HPC解决方案本质上都是将现有的HPC方案虚拟化或容器化,以虚拟机或容器替代物理机。这些做法是为了将公有云资源卖给计算用户,并没有改进计算业务本身。(公有云只是将资源标准化和虚拟化,对比直接调度物理机只是多个了标准化,但实际上传统hpc 使用cgroup本质上是一样的)
LSF,SGE、PBS或者SLURM是传统的HPC的调度系统,将它们做成虚拟机部署到公有云,或者做成容器部署到k8s,可以让多种框架共享物理硬件。但是这种共享是静态的。典型的使用方式是:系统管理员在云上或者k8s上拉起一个SLURM集群;用户通过SSH登录到集群,使用传统的方式安装软件、投递任务。这种使用方式得到的好处是什么呢?一是不需要为每个集群单独购买硬件,二是系统管理员的集群部署工作得到了简化,其它方面没有改进。
传统HPC调度系统
关于目前主流的HPC作业调度系统有:LSF/Slurm/PBS/SGE,他们分别也都有一些衍生版本,所以,有人也将他们称为四大流派。 .
不同的行业因为使用习惯和不同调度器对应用的支持力度不同,往往有不同的偏好:比如高效和超算经常用Slurm,半导体公司最常用的是LSF和SGE,工业是早kennel用PBS更多一些。
并行作业计算层
一个并行作业会在多个计算节点上,启动应用程序,所有应用程序通过彼此交换信息,相互合作,共同完成计算任务。典型的有历史的并行计算技术有MPI,更现代一些的Hadoop,Spark等也可以归于此类。一般作业只需要一个slot用来计算。在LSF
中,一个slot默认对应CPU的一个计算核心(core),但它本身更偏向于一个逻辑概念。因为想不到合适的中文替换,所以沿用英文词。并行作业因为需要同时启动若干程序,会需要更多的slots。这些slots可以跨越机器,所以我们需要更详细的计算节点选择的方式。
LSF和SLM等和spark、hdoop等的区别
Spark 应用程序需要分布式计算节点,大型内存,高速网络和无文件系统依赖关系,因此 Spark 应用程序可以在传统 HPC 环境中运行。LSF只是做任务的调度和集群资源的分配,Spark还有hdoop这些分布式计算框架是利用分布式文件系统,一起来跑一个mapreduce任务,因此spark是可以做为lsf的一种任务调度的。此时可以说spark集群是不是在lsf集群内部的。
如果你看IBM LSF的说明,是对apache hadoop和spark做了兼容的。
hadoop和spark(提供更多的是用于数据处理和转换的工具)也提供类似的调度能力,但是只针对自己的集群,并且没有lsf调度策略梗多样化,lsf能保证多集群资源利用的全局最优。
https://www.ibm.com/docs/zh/spectrum-lsf/10.1.0?topic=101-job-scheduling-execution
1、https://tech.china.com/article/20210701/072021_817803.html
2、https://tonguebusy.com/a/yunying/xiaohongshuyunying/2023/0418/18464304.html