2014-03-03 68 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 –