【发布时间】:2017-06-28 14:52:36
【问题描述】:
即使我在配置文件中关闭了load_examples = False,气流示例 dag 仍保留在 UI 中。
系统通知 dag 不存在于 dag 文件夹中,但它们仍保留在 UI 中,因为调度程序已在元数据数据库中将其标记为活动。
我知道从那里删除它们的一种方法是直接删除数据库中的这些行,但当然这并不理想。我应该如何继续从 UI 中删除这些 dag?
【问题讨论】:
即使我在配置文件中关闭了load_examples = False,气流示例 dag 仍保留在 UI 中。
系统通知 dag 不存在于 dag 文件夹中,但它们仍保留在 UI 中,因为调度程序已在元数据数据库中将其标记为活动。
我知道从那里删除它们的一种方法是直接删除数据库中的这些行,但当然这并不理想。我应该如何继续从 UI 中删除这些 dag?
【问题讨论】:
除了手动删除数据库中的相应行外,目前无法阻止已删除的 DAG 在 UI 上显示。唯一的其他方法是在 initdb 之后重新启动服务器。
【讨论】:
气流 1.10+:
load_examples = False
airflow delete_dag example_dag_to_delete
这样可以避免重置整个气流数据库。
(从 Airflow 1.10 开始有从数据库中删除 dag 的命令,参见this answer)
【讨论】:
假设您已通过 Anaconda 安装气流。 否则在您的 python 站点包文件夹中查找气流并按照以下说明操作。
按照https://stackoverflow.com/a/43414326/1823570的说明操作后
cat $AIRFLOW_HOME/airflow-webserver.pid | xargs 杀死 -9
气流网络服务器 -p [端口号]
【讨论】:
airflow initdb 重启整个数据库吗?这个气流实例已经在生产中,我已经有来自正在运行的 Dags 的历史数据。我一直在寻找可以解决问题的解决方案,但试图避免从头开始。
airflow resetdb 清理了我所有的工作,但是,我在运行 resetdb 后在 UI 中看到了错误。我无法访问 UI 中的任何内容。请查收:stackoverflow.com/questions/52675779/…
airflow resetdb 肯定在这里工作。
我所做的是为各种目的创建多个 shell 脚本,例如启动 webserver、启动调度程序、刷新 dag 等。我只需要运行脚本来做我想做的事。这是列表:
(venv) (base) [pchoix@hadoop02 airflow]$ cat refresh_airflow_dags.sh
#!/bin/bash
cd ~
source venv/bin/activate
airflow resetdb
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_scheduler.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_webserver.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &
不要忘记chmod +x 这些脚本
希望对您有所帮助。
【讨论】: