AirflowDAGをデバッグするときに確認する7つのよくある間違い

タスクが実行されていませんか?DAGが機能していませんか?ログが見つかりませんか?同じ問題がありました。以下は、Airflowデプロイメントをデバッグするときに覚えておくべき一般的なエラーといくつかの関連する修正のリストです。







Apache Airflowは、機械学習モデルのトレーニングから一般的なETLオーケストレーションまで、ほぼすべての種類の作業の主要なオープンソースタスクスケジューラになりました。これは非常に柔軟なツールであり、経験からわかるように、5人のスタートアップとFortune50チームの両方のミッションクリティカルなプロジェクトをサポートしています。







そうは言っても、多くの人が強力な「空白のキャンバス」と見なしているツールそのものが、始めたばかりの場合はすぐに両刃の剣になる可能性があります。残念ながら、特に圧倒的な豊富なリソースやベストプラクティスは、ApacheAirflowの基本的な基盤よりも1〜2ステップ上にあります。







このギャップを可能な限り埋めるために、チームの経験と規模に関係なく、ほとんどすべてのユーザーが直面する最も一般的な問題のいくつかをまとめました。Airflowを初めて使用する場合でも、パワーユーザーを使用する場合でも、よくある間違いのリストと関連する修正を確認してください。







1.DAGが必要な時間に機能していません



1時間ごとに開始する新しいDAGを作成しました。今日の午後2時から1時間ごとの間隔を設定し、数時間後に確認するようにリマインダーを設定します。午後3時30分に確認すると、DAGは機能していましたが、ログには、午後2時に記録された期日が1つしかないことが示されています。午後3時に何が起こったのですか?







トップフィックスモードにジャンプする前に(あなたが最初ではありません)、これが予想される動作であることを確認してください。Airflowスケジューラーの機能は少し直感に反します(そしてAirflowコミュニティでいくつかの論争を引き起こします)が、あなたはそれのコツをつかむでしょう。2つのこと:







  • Airflow DAG schedule_interval



    .


    , schedule_interval



    . , DAG 2 , 3 . , Airflow , , 2 , .

    Airflow, , .
  • Airflow UTC.

    , , API, , , .

    , DAG- . , DAG 19:00 12:00 .

    1.10, Airflow , - DAG UTC .


2. DAG



, , DAG , - , .







,

datetime.now()





start_date



.







, DAG



,



. , , Airflow datetime.now()



.







DAG start_date



, Airflow , . Airflow DAG, datetime.now()



(.. ) , . , Airflow DAG 5-10 , .







DAG, (, datetime(2019,1,1)



) catchup=False ( ).







. DAG Airflow ( Play



). , , DAG, . , run_id



manual__



scheduled__



.







3. 503



Airflow , , -, , - -.

503, , -.







-



503 - ( deployment kubernetes), Airflow, Airflow. - , -.







, 503 , - (, Astronomer kubernetes CrashLoopBackOff



). deployment kubernetes, - - , (10 ), , . , .







deployment , , - DAG ( , ).









  1. -?

    Airflow 1.10 , Airflow 1.9, ( ), , 503- . , -.

    Astronomer, - 5 AU (Astronomer Units).







  2. -?

    - ( ), web_server_master_timeout



    web_server_worker_timeout



    .

    - Airflow , 503 (-). , deployment , , , 503.







  3. ?

    API, JSON , - - .

    Airflow DAG, ( ). , , , , .

    , , Python.









4.



, .







Sensors



Airflow 1.10.1 , , , , . , , , , .







, X , (sensors?), X-3 . , (sensors?), , ( (sensors?) ).







:







  1. DAG, .

    , — , .







    2. -









: Airflow v1.10.2 mode = reschedule



. , , up_for_reschedule



, .







5. ,



, , , , : Env



, + Worker Scheduler.







1. Env (Concurrency)



( ), — , DAG DAG ? , , , . , :







1. ()







  • , (parallel) DAG , . « ».







  • ENV AIRFLOW__CORE__PARALLELISM=18
          
          







2. Concurrency DAG (dag_concurrency)







  • , DAG. « , DAG».







  • ENV AIRFLOW__CORE__DAG_CONCURRENCY=16
          
          







3. (Nonpooledtaskslotcount)







  • , « », .







  • ENV AIRFLOW__CORE__NON_POOLED_TASK_SLOT_COUNT=256
          
          







4. DAG (maxactiverunsperdag)







  • , DAG DAG.







  • ENV AIRFLOW__CORE__MAX_ACTIVE_RUNS 3
          
          







5. Concurrency (worker_concurrency)







  • , . , CeleryExecutor 16 . « ».







  • , , , dagconcurrency. 1 , , workerconcurrency



    = parallelism



    .







  • ENV AIRFLOW__CELERY__WORKER_CONCURRENCY=9
          
          







6. ()







  • . «» DAG , DAG. , , airflow.cfg



    .


: DAG API, «» — t, , .







2.



concurrency , , (deployment) . Astronomer, 5 AU Scheduler 10 AU Celery, .







, , :







  • DAG , , , 2 3 «» .
  • , , , , , « » , .


Executors Airflow Executors: Explained Guide.







6.



, - , .







- :







Failed to fetch log file from worker. Invalid URL 'http://:8793/log/staging_to_presentation_pipeline_v5/redshift_to_s3_Order_Payment_17461/2019-01-11T00:00:00+00:00/1.log': No host supplied
      
      





, :







  1. () , , , .







    /







  2. log_fetch_timeout_sec



    5 ( ).







    ( ), - (handshake) .













  3. Astronomer, Configure



    Astronomer.







  4. , 15 ?







    Astronomer, — , . , 15 .







  5. Celery, .







    , Kubernetes.







    Kubectl : kubectl exec -it {worker_name} bash









    ~/logs



    . DAG/TASK/RUN



    .







  6. .







    , , , . , Airflow , - .







    airflow.cfg



    run_duration



    . run_duration



    , -1



    , , , , run_duration



    , 3600



    , . . , , , .









Astronomer, :







  • AIRFLOW__SCHEDULER__RUN_DURATION={num_seconds_between_restarts}



    Astronomer
  • astro airflow deploy



    CLIを実行して、すべてをすぐに再起動します(Celeryを使用している場合は、ここで使用できるワーカー終了猶予期間を利用して、タスク実行の既存の即時障害を最小限に抑えることができます)


このリストは、天文学者のお客様がAirflowの基本的な問題を解決するのを支援した経験に基づいていますが、ご意見をお聞かせください。含めると便利だと思われるものを見逃した場合は、people @ astronomer.ioまでお気軽にお問い合わせください。







ご不明な点がある場合、または当社チームからのAirflowサポートをお探しの場合は、こちらからお問い合わせください。








All Articles