关于Spark 集群中调度GPU的一些实验

本文分享了作者在Spark集群中调度GPU进行加速计算的实验过程。由于Spark本身不直接支持GPU,作者通过JNI方式调用GPU,并利用Docker实现GPU资源的虚拟化与量化。结合K8S平台,实现了GPU资源的细粒度管理和Spark集群的快速扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Spark 集群中调度GPU的一些实验

自己毕设做了一些Spark 调用GPU 相关的实验,自己也在网上找到了一些资料,也写下来分享一些自己的做法。

目前Spark(2.3) 还不支持直接调用GPU , 需要自己通过JNI的方式实现调用GPU来做一些加速计算。通常是自己定义好接口,在用NVCC生成动态链接库,然后在Spark中调用。

自己做的一些尝试

1.通过Docker 做到 GPU 容器化,虚拟化。若GPU支持MPS,建议开启MPS。 一个容器成为一个Spark计算节点。

2.为了更好的扩展和调度,采用上面的镜像。在K8S中建立Spark集群,可以通过副本集快速扩容。

3.可以预估单个计算任务,需要的资源,合理的指定每个GPU node 部署的 单个SparkGPU容器的数量。若需要更细粒度的管理每个容器分配的GPU资源,可以查看阿里云开源的一个K8S插件,支持MB级别的分配(https://github.com/nvidia/k8s-device-plugin)

4.总结起来就是,我做的是把每张不同的GPU卡,通过Docker虚拟化做到细粒度的量化,因为每张卡的计算能力不同,这样可以通过K8S,快速给不同的节点部署不同个数的容器实例,在容器实例中启动Spark,再对saprk层面做公平的计算分配。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值