小编sta*_*ust的帖子

使用 Apache Airflow 提交和监控 SLURM 作业

我正在使用 Slurm 作业调度程序在集群上运行我的作业。使用 Apache Airflow 提交 Slurm 作业并检查其状态的最有效方法是什么?

我能够使用 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)
Run Code Online (Sandbox Code Playgroud)

python-3.x slurm airflow airflow-scheduler

10
推荐指数
1
解决办法
1497
查看次数

标签 统计

airflow ×1

airflow-scheduler ×1

python-3.x ×1

slurm ×1