【发布时间】:2018-02-01 19:52:54
【问题描述】:
我正在使用 Airflow v1.8.1 并在 kubernetes 和 Docker 上运行所有组件(worker、web、flower、scheduler)。 我将 Celery Executor 与 Redis 一起使用,我的任务如下所示:
(start) -> (do_work_for_product1)
├ -> (do_work_for_product2)
├ -> (do_work_for_product3)
├ …
所以start 任务有多个下游。
我设置了并发相关配置如下:
parallelism = 3
dag_concurrency = 3
max_active_runs = 1
然后当我手动运行这个 DAG 时(不确定它是否永远不会发生在计划任务上),一些下游会被执行,但其他下游会停留在“排队”状态。
如果我从管理 UI 中清除任务,它就会被执行。 没有工作日志(在处理了一些第一个下游之后,它只是不输出任何日志)。
Web 服务器的日志(不确定 worker exiting 是否相关)
/usr/local/lib/python2.7/dist-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead.
.format(x=modname), ExtDeprecationWarning
[2017-08-24 04:20:56,496] [51] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow_dags
[2017-08-24 04:20:57 +0000] [27] [INFO] Handling signal: ttou
[2017-08-24 04:20:57 +0000] [37] [INFO] Worker exiting (pid: 37)
调度程序也没有错误日志。每当我尝试此操作时,许多卡住的任务都会发生变化。
因为我也使用 Docker,所以我想知道这是否相关: https://github.com/puckel/docker-airflow/issues/94 但到目前为止,没有任何线索。
有没有人遇到过类似的问题或知道我可以针对这个问题调查什么...?
【问题讨论】:
-
嗨@Norio,我们遇到了与
queue中的任务类似的问题,但调度程序似乎忘记了其中一些。当我再次使用airflow scheduler时,它们已被拾取。我也在使用 1.8.1、kubernetes 和 Docker,但是使用 LocalExecutor,这里也是同样的问题。 -
@Chengzhi 谢谢你的信息。我利用这个 shell github.com/apache/incubator-airflow/blob/… 自动重启调度程序而不依赖 k8s 的后退,所以在我的情况下调度程序应该定期重新生成,但不要永远选择一些任务......非常奇怪。
-
超级,感谢分享,非常有条理,如果我发现了什么,我会让你保持循环,但看起来这是目前的解决方案。
-
我在气流和使用 LocalExecutor 时遇到了类似的问题。我的设置与@Chengzhi 的设置相似。有人在这里找到什么可以尝试的吗?
-
刚刚解决了我的案子,它看起来不像你的案子,但值得分享。我正在使用 logs/ 文件夹,但没有注意到文件夹的所有所有权都发生了变化。由于这个原因,Airflow 无法写入日志文件,并且任务一直卡在排队状态。将所有文件的所有权更改回
airflow用户使应用程序恢复正常。sudo chown -R airflow:airflow logs/
标签: airflow apache-airflow airflow-scheduler