Slurm:在salloc vs srun下执行的代码有什么区别

时间:2014-03-03 16:48:03

标签: hadoop yarn slurm

我正在使用由slurm管理的集群来运行一些纱线/ hadoop基准测试。为此,我在slurm分配的节点上启动hadoop服务器,然后在它们上运行基准测试。我意识到这不是运行生产hadoop集群的预期方式,但需要必须。

为此,我首先编写了一个与srun运行的脚本,例如srun -N 4 setup.sh。此脚本编写配置文件并在分配的节点上启动服务器,编号最小的机器充当主节点。这一切都有效,我可以运行应用程序。

但是,因为我想启动服务器一次,然后在它们上启动多个应用程序而不重新开始/编码所有内容,我希望使用salloc代替。我原以为这只是运行salloc -N 4然后运行srun setup.sh的简单案例。不幸的是,这不起作用,因为不同的服务器无法相互通信。任何人都可以向我解释在使用srun和使用salloc然后使用srun之间的操作环境有何不同?

非常感谢

丹尼尔

1 个答案:

答案 0 :(得分:4)

sbatch和salloc为作业分配资源,而srun则在这些资源上启动并行任务。在作业分配中调用时,srun将在部分或全部已分配资源上启动并行任务。在这种情况下,srun默认继承它运行的sbatch或salloc的相关选项。然后,您可以(通常)提供srun不同的选项,这些选项将覆盖默认情况下接收的内容。在作业中每次调用srun都称为作业步骤。

srun也可以在作业分配之外调用。在这种情况下,srun会请求资源,并且在授予这些资源时,将这些资源中的任务作为单个作业和作业步骤启动。