我有一个DAG运行了几个月,从上个星期开始,它的行为异常。我正在运行一个bash操作符,它正在执行一个shell脚本,在shell脚本中我们有一个配置单元查询。重试次数设置为4,如下所示。
default_args={'所有者':'气流','depends_on_past':假,'电子邮件':['airflow@example.com'],'email_on_failure':假,'email_on_retry':假,'重试': 4,'retry_delay':时间增量(分钟=5)}
我可以在日志中看到,它正在触发配置单元查询,并在一段时间后(大约5到6分钟)停止心跳,然后进行重试。纱线显示查询尚未完成,但气流触发了下一次运行。现在,在Thread中,为同一任务运行了两个查询(第一次运行一个查询,第二次重试一个查询)。类似地,此dag为同一任务触发5次查询(因为重试次数为4次),并在最后一次中显示失败状态。有趣的是,同一个dag在很长一段时间内运行良好。此外,这也是生产中与蜂巢相关的所有DAG的问题。今天我升级到了airflow v 1.10的最新版本。9.在这种情况下,我使用LocalExecuter。
有没有人遇到过类似的问题?
无论是否连接到后端DB,气流UI都不会自行启动重试。看起来你的任务执行者正在变成僵尸,在这种情况下,调度程序的僵尸检测开始启动,并调用任务实例(TI的)handle_failure方法。简而言之,您可以在dag中重写该方法,并添加一些日志记录来查看发生了什么,事实上,您应该能够Hadoop RM并检查作业的状态,并相应地做出决定,包括取消重试。
例如,请参阅此代码,我编写此代码仅用于处理Zombie故障。