web-dev-qa-db-ja.com

エアフロー:タスクはキューに入れられましたが実行されていません

私はエアフローに不慣れで、ETLパイプラインを実行するようにエアフローを設定しようとしています。インストールできました

  1. 気流
  2. postgres
  3. セロリ
  4. rabbitmq

タートリアルダグをテスト実行することができます。ジョブをスケジュールしようとすると、スケジューラーはそれを取得して、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:[email protected]/rabbitmq_vhost

celery_result_backend = db+postgresql+psycopg2://postgres:[email protected]:5432/airflow


flower_Host = 0.0.0.0

flower_port = 5555

default_queue = default

DAG: これは私が使用したチュートリアルdagです

そして、私のdagの開始日は-'start_date ':datetime(2017、4、11)、

7
Deepak S

エアフローの3つのコンポーネントすべてを実行します。

airflow webserver
airflow scheduler
airflow worker

前の2つだけを実行すると、タスクはキューに入れられますが、実行されません。エアフローワーカーは、実際にダグを実行するワーカーを提供します。

また、セロリ4.0.2は、現在、エアフロー1.7または1.8と互換性がありません。代わりにセロリ3を使用してください。

10
Xia Wang

LocalExecutorで十分なオプションである場合は、いつでも元に戻そうとすることができます。 CeleryExecutorに関するいくつかの問題について聞いたことがあります。

executor = CeleryExecutorファイルでexecutor = LocalExecutorairflow.cfgに変更するだけです(ほとんどの場合~/airflow/airflow.cfg)。

スケジューラを再起動すると、それだけです。

0
Jakub Bielan

あなたの問題はすでに解決されており、セロリのバージョンの不一致に関連していると思いますが、ログの場所をエアフローサービスのユーザーが書き込む権限のない場所に変更したため、タスクがキューに入れられて実行されませんでした。

上記の質問で与えられたairflow.cfgの例では:base_log_folder = /root/airflow/logs

AWS EC2マシンを使用していて、ログをbase_log_folder = /mnt/airflow/logsに書き込むように変更しました

UIには、タスクがキューに入れられる理由が示されていません。「不明、すべての依存関係が満たされています...」とだけ表示されます。airflowデーモン/サービスユーザーに書き込み権限を与えると、修正されました。

0
Davos

今日もairflowv1.8にアップグレードしようとしましたが、セロリとrabbitmqに苦労しました。助けになったのは、airflow.cfgのlibrabbitmq(amqpを使用するときにデフォルトで使用される)からpyamqpへの変更でした。

broker_url = pyamqp://rabbit:[email protected]/rabbitmq_vhost

(これは私がアイデアを得たところです: https://github.com/celery/celery/issues/3675

0
Olaf