Aproveite ao máximo: Cloud Composer como uma solução totalmente gerenciada para Airflow

Olá, Habr! Meu nome Ă© Sergey, sou engenheiro lĂ­der de software / lĂ­der de sream na EPAM, engenheiro e arquiteto certificado do Google Cloud. Há mais de 10 anos realizo desenvolvimento comercial para diversas empresas globais, principalmente com foco em backend. Eu tambĂ©m adoro compartilhar meu conhecimento. Hoje quero falar sobre o Apache Airflow, que, na minha opiniĂŁo, Ă© uma boa ferramenta para construir seus pipelines.  





Qual Ă© o plano?





  • Em poucas palavras, vou falar sobre o Airflow para aqueles que ainda nĂŁo trabalharam com ele. Tudo isso pode ser encontrado com mais detalhes na Internet, portanto, irei abordar apenas os conceitos básicos.  





  • Vamos ver o que Ă© o  Google Cloud Composer , como ele usa o Airflow e simplifica o desenvolvimento em projetos reais.  





  • Vamos dar uma olhada nas  práticas de desenvolvimento e implantação  no Google Cloud Composer, bem como nas dificuldades e limitações que podem ser encontradas ao iniciar o Airflow no Cloud Composer.





  • E, Ă© claro, compartilharei ferramentas Ăşteis  que vocĂŞ pode usar em seu trabalho.  





Fluxo de ar em vários parágrafos 





Portanto, esta Ă© uma ferramenta para planejar, construir e monitorar pipelines escritos em Python. Existem outras soluções de orquestração de processos prontas para usar, como o Luigi. Mas agora vamos falar sobre as vantagens do Airflow:  





  1. Muito bom para construir pipelines. No centro de tudo o que ele possui está um gráfico acĂ­clico direcionado, que permite implementar a execução sequencial ou paralela de tarefas, bem como gerenciar sua ordem e dependĂŞncias.  





  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