2014-03-03 125 views
5

我正在使用由slurm管理的集群运行一些yarn/hadoop基准。为此,我在由slurm分配的节点上启动hadoop服务器,然后在其上运行基准测试。我意识到这不是运行生产hadoop集群的预期方式,但需要。Slurm:在salloc vs srun下执行的代码有什么区别

要做到这一点,我开始写一个脚本,运行srun例如srun -N 4 setup.sh。该脚本写入配置文件并在分配的节点上启动服务器,其中编号最小的机器充当主节点。这一切正常,我可以运行应用程序。

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

非常感谢

丹尼尔

回答

1

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

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

+0

感谢澄清,丹尼尔。 –

+9

您还应该注意原始来源https://groups.google.com/forum/#!topic/slurm-devel/wKaUEOzuQq4 –