web-dev-qa-db-ja.com

Apache Airflow:タスクはキューに入れられたと言いますが、エグゼキュータはタスクインスタンスが終了した(失敗した)と報告します

私たちの気流設備はCeleryExecutorを使用しています。同時実行構成は

# The amount of parallelism as a setting to the executor. This defines
# the max number of task instances that should run simultaneously
# on this airflow installation
parallelism = 16

# The number of task instances allowed to run concurrently by the scheduler
dag_concurrency = 16

# Are DAGs paused by default at creation
dags_are_paused_at_creation = True

# When not using pools, tasks are run in the "default pool",
# whose size is guided by this config element
non_pooled_task_slot_count = 64

# The maximum number of active DAG runs per DAG
max_active_runs_per_dag = 16
[celery]
# This section only applies if you are using the CeleryExecutor in
# [core] section above

# The app name that will be used by celery
celery_app_name = airflow.executors.celery_executor

# The concurrency that will be used when starting workers with the
# "airflow worker" command. This defines the number of task instances that
# a worker will take, so size up your workers based on the resources on
# your worker box and the nature of your tasks
celeryd_concurrency = 16

毎日実行するDAGがあります。データがhdfsに存在するかどうかを検知し、10分間スリープし、最後にs3にアップロードするパターンに従って、いくつかのタスクを並行して実行します。

一部のタスクで次のエラーが発生しています:

2019-05-12 00:00:46,212 ERROR - Executor reports task instance <TaskInstance: example_dag.task1 2019-05-11 04:00:00+00:00 [queued]> finished (failed) although the task says its queued. Was the task killed externally?
2019-05-12 00:00:46,558 INFO - Marking task as UP_FOR_RETRY
2019-05-12 00:00:46,561 WARNING - section/key [smtp/smtp_user] not found in config

この種のエラーは、これらのタスクでランダムに発生します。このエラーが発生すると、タスクインスタンスの状態はすぐにup_for_retryに設定され、ワー​​カーノードにはログが記録されません。いくつかの再試行の後、それらは実行され、最終的に終了します。

この問題により、ETLの遅延が大きくなることがあります。誰もがこの問題を解決する方法を知っていますか?

6
GodBlessYou

これはすでに修正済みです。私自身の質問に答えましょう:

5つのairflowワーカーノードがあります。これらのノードに分散されたタスクを監視するためにflowerをインストールした後。失敗したタスクは常に特定のノードに送信されることがわかりました。 airflow testコマンドを使用して他のノードでタスクを実行しようとしたところ、正常に機能しました。最終的に、その特定のノードのpythonパッケージが間違っていたことが理由でした。

0
GodBlessYou

私たちは同様の問題に直面していました。

"-x, --donot_pickle"オプション。

詳細情報:- https://airflow.Apache.org/cli.html#backfill

2
Deepan Ram

DagRunsで非常に似た症状が見られました。次のようなキューイングと強制終了のタスク言語を考えると、ExternalTask​​Sensorと同時実行の問題が原因であると思いました:Executor reports task instance <TaskInstance: dag1.data_table_temp_redshift_load 2019-05-20 08:00:00+00:00 [queued]> finished (failed) although the task says its queued. Was the task killed externally?しかし、ワーカーログを見ると、変数の設定が原因でエラーが発生していることがわかりましたVariable.set私のDAG内。この問題はここで説明されています airflow dagにパス変数を追加すると、重複するキー値が一意の制約に違反します ここで、スケジューラは定期的にdagbagをポーリングして変更を動的に更新します。ハートビートごとのエラーにより、ETLに大幅な遅延が発生していました。

エラーまたは遅延/これらの症状を引き起こしている可能性のあるロジックをwh_hdfs_to_s3 DAG(またはその他)で実行していますか?

0
jiboom