【问题标题】:Why are my Airflow tasks queued but not running?为什么我的 Airflow 任务排队但没有运行?
【发布时间】:2017-09-17 09:05:39
【问题描述】:

我是气流新手,并试图设置气流来运行 ETL 管道。我能够安装

  1. 气流
  2. postgres
  3. 芹菜
  4. rabbitmq

我能够测试运行教程 dag。当我尝试安排作业时,调度程序能够将其提取出来并将我可以在 UI 上看到但任务未运行的作业排队。有人可以帮我解决这个问题吗?

这是我的配置文件:

[core]

airflow_home = /root/airflow

dags_folder = /root/airflow/dags

base_log_folder = /root/airflow/logs

executor = CeleryExecutor

sql_alchemy_conn = postgresql+psycopg2://xxxx.amazonaws.com:5432/airflow

api_client = airflow.api.client.local_client


[webserver]


web_server_host = 0.0.0.0

web_server_port = 8080

web_server_worker_timeout = 120

worker_refresh_batch_size = 1

worker_refresh_interval = 30

[celery]

celery_app_name = airflow.executors.celery_executor

celeryd_concurrency = 16

worker_log_server_port = 8793

broker_url = amqp://rabbit:rabbit@x.x.x.x/rabbitmq_vhost

celery_result_backend = db+postgresql+psycopg2://postgres:airflow@xxx.amazonaws.com:5432/airflow


flower_host = 0.0.0.0

flower_port = 5555

default_queue = default

DAG:This is the tutorial dag i used

我 dag 的开始日期是 -- 'start_date': datetime(2017, 4, 11),

【问题讨论】:

  • 确保你的worker和调度器共享同一个celery_result_backend、同一个dags_folder和同一个broker_url
  • @René Hoffmann 我确保 celery 结果后端、dag 文件夹和 broker_url 对于调度程序和工作人员来说相同,并启动了气流工作人员......但它仍然是一样的......工作即将安排但什么都没跑

标签: postgresql rabbitmq celery airflow


【解决方案1】:

如果LocalExecutor 对您来说足够了,您可以随时尝试重新使用它。我听说CeleryExecutor 有一些问题。

只需将airflow.cfg 文件中的executor = CeleryExecutor 更改为executor = LocalExecutor(大多数情况下是~/airflow/airflow.cfg)。

重新启动调度程序,就是这样!

【讨论】:

    【解决方案2】:

    我意识到您的问题已经得到解答并且与 celery 版本不匹配有关,但我也看到任务队列并且从未运行,因为我将日志位置更改为气流服务用户无权写入的位置.

    在上述问题中给出的示例气流.cfg 中: base_log_folder = /root/airflow/logs

    我正在使用 AWS EC2 机器并更改了要写入的日志 base_log_folder = /mnt/airflow/logs

    在 UI 中,没有说明为什么任务要排队,它只是说“未知,所有依赖项都得到满足......”授予气流守护程序/服务用户写入修复它的权限。

    【讨论】:

      【解决方案3】:

      我今天也尝试升级到气流 v1.8,并在 celery 和 rabbitmq 上苦苦挣扎。有帮助的是在airflow.cfg中从librabbitmq(仅使用amqp时默认使用)更改为pyamqp

      broker_url = pyamqp://rabbit:rabbit@x.x.x.x/rabbitmq_vhost
      

      (这是我的灵感来源:https://github.com/celery/celery/issues/3675

      【讨论】:

        【解决方案4】:

        让你运行气流的所有三个组成部分,即:

        airflow webserver
        airflow scheduler
        airflow worker
        

        如果只运行前两个,任务会排队,但不会执行。气流工作者将提供实际执行 dags 的工作者。

        另外顺便说一句,celery 4.0.2 目前与气流 1.7 或 1.8 不兼容。改用 celery 3。

        【讨论】:

        • @XiaWang - 您能否指出任何支持文档或其他确认 celery 4.0.2 不兼容的文件?在 apache github repo setup.py 中,celery 版本 >=3.1.17 - 这并不能真正告诉我们它是否支持。
        • @Nick 这是关于 Apache 的 issues webpage 的相对较新的报告。我不认为 celerly 4 的依赖问题现在已经解决了。
        • @XiaWang - 感谢您的链接。有趣的是,我没有看到这个问题,不知道是否还有其他问题。 celery 4.x 没有任何异常。我想也许我们可能需要回顾一下我们过去的 dag 运行依赖关系,以了解为什么事情运行不正确。
        • 我也面临同样的问题,所有作业都在排队但未执行。我正在使用 LocalExecuter(因此无需运行“气流工作者”)。有什么办法解决吗?
        猜你喜欢
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        • 1970-01-01
        相关资源
        最近更新 更多