7 errores comunes que se deben verificar al depurar los DAG de flujo de aire

¿Las tareas no se están ejecutando? ¿DAG no funciona? ¿No se encuentran los registros? Tuvimos los mismos problemas. Aquí hay una lista de errores comunes y algunas correcciones relacionadas que debe tener en cuenta al depurar su implementación de Airflow.







Apache Airflow se ha convertido en el programador de tareas de código abierto líder para casi cualquier tipo de trabajo, desde el entrenamiento de un modelo de aprendizaje automático hasta la orquestación ETL general. Es una herramienta increíblemente flexible que podemos decir por experiencia que respalda proyectos de misión crítica tanto para empresas emergentes de cinco personas como para equipos Fortune 50.







Dicho esto, la misma herramienta que muchos consideran un poderoso "lienzo en blanco" puede convertirse rápidamente en un arma de doble filo si recién está comenzando. Y, desafortunadamente, no existe una riqueza particularmente abrumadora de recursos y mejores prácticas un paso o dos por encima de los fundamentos básicos de Apache Airflow.







En un esfuerzo por llenar este vacío tanto como sea posible, hemos recopilado algunos de los problemas más comunes que enfrentan casi todos los usuarios, sin importar cuán experimentado y grande sea su equipo. Ya sea que sea nuevo en Airflow o un usuario avanzado, consulte esta lista de errores comunes y algunas correcciones relacionadas para tener en cuenta.







1. Su DAG no está funcionando en el momento requerido



DAG, . , 14:00, , . 15:30 , DAG , , 14:00. 3 ?







( ), , . Airflow ( Airflow), . :







  • 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
  • Ejecute astro airflow deploy



    la CLI para reiniciar todo de inmediato (si está usando Celery, puede aprovechar el período de gracia de terminación del trabajador que puede usar aquí para minimizar las fallas inmediatas existentes en la ejecución de la tarea)


Esta lista se basa en nuestra experiencia en ayudar a los clientes de Astronomer a resolver problemas básicos de flujo de aire, pero queremos saber de usted. No dude en contactarnos en people@astronomer.io si nos perdimos algo que crea que sería útil incluir.







Si tiene más preguntas o está buscando soporte de Airflow de nuestro equipo, contáctenos aquí.








All Articles