Aproveche al máximo: Cloud Composer como una solución completamente administrada para Airflow

¡Hola, Habr! Mi nombre es Sergey, soy ingeniero de software principal / Sream Lead en EPAM, un ingeniero y arquitecto certificado de Google Cloud. Durante más de 10 años he estado haciendo desarrollo comercial para varias empresas globales, principalmente con un enfoque en backend. También me encanta compartir mis conocimientos. Hoy quiero hablar sobre Apache Airflow, que, en mi opinión, es una buena herramienta para construir sus pipelines.  





¿Cuál es el plan?





  • En pocas palabras, les contaré sobre Airflow para aquellos que aún no han trabajado con él. Todo esto se puede encontrar con más detalle en Internet, por lo que solo repasaré los conceptos básicos.  





  • Veamos qué es  Google Cloud Composer , cómo usa Airflow y simplifica el desarrollo en proyectos reales.  





  • Echemos un vistazo a las  prácticas de desarrollo e implementación  dentro de Google Cloud Composer, así como a las dificultades y limitaciones que se pueden encontrar al iniciar Airflow en Cloud Composer.





  • Y, por supuesto, compartiré herramientas útiles  que puede utilizar en su trabajo.  





Flujo de aire en varios párrafos 





Entonces, esta es una herramienta para planificar, construir y monitorear pipelines escrita en Python. Hay otras soluciones de orquestación de procesos listas para usar, como Luigi. Pero ahora hablemos de las ventajas de Airflow:  





  1. Muy bueno para la construcción de tuberías. En el corazón de todo lo que tiene está un gráfico acíclico dirigido, que le permite implementar la ejecución secuencial o paralela de tareas, así como administrar su orden y dependencias.  





  2. .    open-sourse  ,     .  





  3. -: , .  





  4.  REST API,              API. 





 ETL-pipeline  “” . , GCS . , , , . ,    ,  . 





   Airflow.   DAG (Directed Acyclic Graph) —   ,  Airflow. , . ,    .  





Tasks  DAG .  ,  ,    .  Operators  ,   ,   .    , —  DAG-.      — DataLoadOperator, GoogleCloudStorageListOperator  UpdateStatusOperator —    , .  , ,  DAG-,   .         .  





E  DAGs Run  Tasks Instances. DAGs Run —  DAG,   . Tasks Instance — ,    DAG Run.   DAG Run   Tasks Instances —  execution date.   





  DAG ,    ,  pipeline-.  





 ,       Airflow:  





  •  (Scheduler)   DAG-,          .  





  •  ( Executor) — ,      .  : SequentialExecutor, CeleryExecutor  .   . , CeleryExecutor  Queue Broker. 





  •  (Workers)   (  Celery).  





  • - , , ,   HTTP-,  DAG-  .   ,     ,  Airflow, DAG-,  . .  





  •        Logs.    ,      Airflow.     , -  loud-. ,   Stackdriver   GCS bucket .   





  •  Admin Panel  /   DAG-,  ,  ,    (,   “”).





  ? 





 Airflow   ,   DAG-.    ,      . -     , .       ,  task execution ,     Admin Panel. , .         ,  deployment-. 









Google Cloud Composer  





Google Cloud Composer   Composer —  fully managed  , ,       cloud.  





  , . ,    ,      storage A  storage B.   Airflow DAG,    Composer        .   ,     .  - ,    retry,       .  , .  ,  cron jobs, 100  , —   Airflow  Composer , .  





 Composer:  





  • -,     . Composer   Airflow    Google Console  UI “ ”,    ,      DAG-  .    ,   DAG-,   ,  ,  Composer bucket  GCS.     .





  • -,  Composer    ,   UI.          Airflow, .  





  • -, Composer   security- ,  Google Cloud. , Private IPs, Authorization  . .  





  • -, Composer Console     .  





    Composer.   “,  fully managed  “”?”  ,   ,    . , : 





 ( ,  Composer  ).    Tenant Project — ,  Identity Access Management. . AppEngine Flexible   -, Cloud SQL —   Airflow.  Cloud SQL   , ,    -, .  Cloud Storage Composer  bucket, ,  / DAG-,  .     ,   Kubernetes . Core-,  , worker- , , Redis,   CeleryExecutor,   Google Kubernetes Engine.  :    Kubernetes ,  ,     Redis. , Redis     Airflow,    Kubernetes Engine.  ,  Composer   Stackdriver    —       .  , 100 , .  





, , “ ”.  , , , ,  DevOps-,    , , ,     . . 





,     : 





-,   Tenant Project,   Cloud SQL  .   — .            ,   ,     . 









Deployment  development,  





      —     ,   .  : 





,        .  Airflow   DAGS_FOLDER  PLUGINS_FOLDER  sys.path    , .  :  DAGS_FOLDER  DAG-,  PLUGINS_FOLDER —   Airflow.  





, ,         libs  utils. ,       .   plugins   Airflow PLUGINS,     Airflow.   operatorshooksmacros — ,  Airflow  “ ”.  





   .    pip  requirements.txt   .    Composer,   UI,      . ,  CI/CD ,  gcloud.   pip   Composer





 Airflow  DAGS_FOLDER  PLUGINS_FOLDER  sys.path, ,  ,    DAGS_FOLDER,  PLUGINS_FOLDER.  ,  Airflow,     ,     . ,  Airflow  , ,     DAG-.   PLUGINS_FOLDER   .        plugins —     .  .  , ,     .  





     Airflow:  . Composer       read-only.  





     .airflowignore .  .gitignore , ,   Airflow     . , . , PLUGINS_FOLDER ,    .  .airflowignore    Python ,   . 





 Airflow.      Airflow  ,   UI-,  View.   operators, hooks      .  ,  Airflow   PLUGINS_FOLDER  sys.path,      , , from vnd.operators.my_operator.       ,    ,  Airflow. , :





from vnd.operators.my_operator import MyOperator
from vnd.sensors.my_sensor import MySensor
      
      



,  .   ,    ,  Airflow plugins   AirflowPlugin .  





: , , callable- ,  lazy . ,  DAG-. ,     c  ,   .     ,      .   ,      ,   , - ,        .    :      DAG-   .  





CI/D  —  .   linters, isorts  Gitlab CI/CD .     CI/D   ,   : Jenkins, Gitlab pipeline, Spinnaker.  





,      linters,    unit ,  — .   Composer,  gcloud rsync.  





 Composer   ,       rsync,    Airflow. ,    gcloud composer,    DAG-,   -     . ,   ,   - .  rsync,    ,      /.  









 





, Airflow   . , ,     . ,  ,   Airflow. .  afctl —    CLI-,  Airflow  .     , , DAG-  . ,  afctl  ,    ,  (     ).   





  , ,  Airflow. , Google Cloud Platform, AWS, Azure,     .     providers   Airflow. 





    Airflow Plugins —   , CRM ,   . .     GitHub:  Airflow   ,    , .  






: 





,  Airflow     self-service,   Cloud Composer.  





Cloud Composer, , “” (scaling to zero).  ,  , .   Composer :  ,  A/B-,   . ,      GKE ,   . 





 Composer, , Prod/Dev/Staging.   .  Composer   Airflow,  ,   Google    Airflow.   Composer   :  ,    image,       Airflow.  





   DAG —   ,    .    ,    pip.   





      , ,   .      ,   . 





 AirflowPlugin  —   UI ,   Airflow. .  





 .airflowignore ,        Airflow. ,  .airflowignore   DAG-   ,  Airflow   DAG-  DAG-.    ,  DAG-  , , , .  





  DAG-   Cloud Composer.  DAG-    .    —     “”.   





 Airflow. , GoogleCloudStorageListOperator   , ,    .    -   ,     .





 KubernetesPodOperator  ,  Python.   Kubernetes, Airflow       Pod-. , Composer-.





  Composer,  read-only  Airflow.    .  









, , Airflow Composer :)








All Articles