Machen Sie das Beste aus: Cloud Composer als vollstĂ€ndig verwaltete Lösung fĂŒr Airflow

Hallo Habr! Mein Name ist Sergey, ich bin Lead Software Engineer / Sream Lead bei EPAM, einem zertifizierten Google Cloud-Ingenieur und Architekten. Seit ĂŒber 10 Jahren entwickle ich kommerziell fĂŒr verschiedene globale Unternehmen, hauptsĂ€chlich mit Schwerpunkt auf dem Backend. Ich teile auch gerne mein Wissen. Heute möchte ich ĂŒber Apache Airflow sprechen, das meiner Meinung nach ein gutes Werkzeug fĂŒr den Bau Ihrer Pipelines ist.  





Wie ist der Plan?





  • Kurz gesagt, ich erzĂ€hle Ihnen von Airflow fĂŒr diejenigen, die noch nicht damit gearbeitet haben. All dies ist im Internet ausfĂŒhrlicher zu finden, daher werde ich nur auf die Grundkonzepte eingehen.  





  • Lassen Sie uns sehen, was  Google Cloud Composer ist , wie es Airflow verwendet und die Entwicklung in realen Projekten vereinfacht.  





  • Lassen Sie uns einen Blick auf die  Entwicklungs- und Bereitstellungspraktiken  in Google Cloud Composer sowie auf die Schwierigkeiten und EinschrĂ€nkungen werfen, die beim Starten von Airflow in Cloud Composer auftreten können.





  • Und natĂŒrlich werde ich nĂŒtzliche  Tools vorstellen , die Sie in Ihrer Arbeit verwenden können.  





Luftstrom in mehreren AbsĂ€tzen 





Dies ist also ein Tool zum Planen, Erstellen und Überwachen von in Python geschriebenen Pipelines. Es gibt andere sofort einsatzbereite Prozess-Orchestrierungslösungen wie Luigi. Aber jetzt sprechen wir ĂŒber die Vorteile von Airflow:  





  1. Wirklich gut fĂŒr den Bau von Pipelines. Das HerzstĂŒck von allem, was er hat, ist ein gerichteter azyklischer Graph, mit dem Sie die sequentielle oder parallele AusfĂŒhrung von Aufgaben implementieren sowie deren Reihenfolge und AbhĂ€ngigkeiten verwalten können.  





  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