簡體   English   中英

如何使用許多工作人員發送slurm作業而不僅僅是在本地模式下運行?

[英]How to send a slurm job using many workers and not just running in local mode?

我想使用命令srun和sbatch在slurm集群上使用命令spark-submit運行python腳本。 當我運行當前腳本時,它會一直運行,直到結束和結束狀態為COMPLETED。 但是,查看spark的歷史服務器,我可以看到所有工作ID都被命名為“local ...”。 當我檢查環境變量時,“spark.master”總是設置為local [*]。 我嘗試了很多東西並閱讀了大量文檔,但我找不到如何使用多個工作程序。

這是我的配置:

#SBATCH --time=00:05:00
#SBATCH --nodes=4
#SBATCH --ntasks=4
#SBATCH --mem=4G
#SBATCH --cpus-per-task=8
#SBATCH --ntasks-per-node=1

module load spark/2.3.0
module load python/3.7

source ~/acc_env/bin/activate

export MKL_NUM_THREADS=1
export SPARK_IDENT_STRING=$SLURM_JOBID
export SPARK_WORKER_DIR=$SLURM_TMPDIR
export SLURM_SPARK_MEM=$(printf "%.0f" $((${SLURM_MEM_PER_NODE} *95/100)))

#start master
start-master.sh
sleep 20


MASTER_URL_STRING=$(grep -Po '(?=spark://).*' $SPARK_LOG_DIR/spark-${SPARK_IDENT_STRING}-org.apache.spark.deploy.master*.out)

IFS=' '
read -ra MASTER_URL <<< "$MASTER_URL_STRING"

echo "master url :" ${MASTER_URL}

NWORKERS=$((SLURM_NTASKS - 1))

以下是我用來啟動worker和腳本的命令:

SPARK_NO_DAEMONIZE=1 srun -n ${NWORKERS} -N ${NWORKERS} --label --output=$SPARK_LOG_DIR/spark-%j-workers.out start-slave.sh -m 4g -c ${SLURM_CPUS_PER_TASK} ${MASTER_URL} &
slaves_pid=$!
srun -n 1 -N 1 spark-submit main.py --master ${MASTER_URL} --executor-memory 4g

我找到了答案。 如果有人在將來遇到同樣的問題,我會在那里發布。 問題是我將參數放在srun spark-submit命令中的順序。 你必須在選項之后放入入口點程序(main.py),因為我不知道為什么但似乎在入口點參數之后丟棄了參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM