Отправка и мониторинг заданий SLURM с использованием Apache Airflow - PullRequest
1 голос
/ 27 мая 2019

Я использую планировщик заданий Slurm для запуска своих заданий в кластере. Каков наиболее эффективный способ отправки заданий Slurm и проверки их состояния с помощью Apache Airflow?

Мне удалось использовать SSHOperator для удаленной отправки моих работ и проверки их состояния каждую минуту, пока она не будет завершена, но мне интересно, если кто-нибудь знает лучший способ. Ниже приведен SSHOperator, который я написал.

sshHook = SSHHook(ssh_conn_id='my_conn_id',keepalive_interval=240)

task_ssh_bash = """
cd ~/projects &&
JID=$(sbatch myjob.sh)
echo $JID
sleep 10s # needed
ST="PENDING"
while [ "$ST" != "COMPLETED" ] ; do 
   ST=$(sacct -j ${JID##* } -o State | awk 'FNR == 3 {print $1}')
   sleep 1m
   if [ "$ST" == "FAILED" ]; then
      echo 'Job final status:' $ST, exiting...
      exit 122
   fi
echo $ST
"""

task_ssh = SSHOperator(
    task_id='test_ssh_operator',
    ssh_hook=sshHook,
    do_xcom_push=True,
    command=task_ssh_bash,
    dag=dag)
...