Я хочу запустить скрипт python, используя команду spark-submit в кластере slurm, используя команды srun и sbatch. Когда я запускаю свой текущий скрипт, он работает до конца, и конечный статус ЗАВЕРШЕН. Однако, глядя на сервер истории spark, я вижу, что все идентификаторы заданий называются «локальными ...». Когда я проверяю переменные окружения, «spark.master» всегда устанавливается на локальный [*]. Я много чего перепробовал и прочитал много документации, но не смог найти, как использовать несколько рабочих.
Вот мой конфиг:
#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))
и вот команды, которые я использую для запуска рабочих и сценария:
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