气流:排队但未运行的任务

时间:2017-04-20 15:56:45

标签: postgresql rabbitmq celery airflow airbnb

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

  1. 气流
  2. postgres的
  3. 芹菜
  4. 的RabbitMQ
  5. 我能够测试运行turtorial dag。当我尝试安排作业时,调度程序能够获取它并将我可以在UI上看到的作业排队,但任务没有运行。有人可以帮我解决这个问题吗?我相信我在这里缺少最基本的气流概念。下面是airflow.cfg

    这是我的配置文件:

    [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),

4 个答案:

答案 0 :(得分:7)

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

airflow webserver
airflow scheduler
airflow worker

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

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

答案 1 :(得分:0)

我今天也尝试升级到气流v1.8并且与芹菜和兔子挣扎。有什么帮助改变了librabbitmq(在使用amqp时默认使用)到airflow.cfg中的pyamqp

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

(这是我得到的想法:https://github.com/celery/celery/issues/3675

答案 2 :(得分:0)

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

在上面问题中给出的示例airflow.cfg中: false true false

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

在UI中没有给出关于为什么任务排队的指示,它只是说“未知,所有依赖都被满足......”给予气流守护进程/服务用户写入修复它的权限。

答案 3 :(得分:-1)

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

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

重新启动调度程序就可以了!