Manfaatkan: Cloud Composer sebagai solusi yang terkelola sepenuhnya untuk Airflow

Halo, Habr! Nama saya Sergey, saya Pimpinan Insinyur Perangkat Lunak / Pimpinan Sream di EPAM, seorang insinyur dan arsitek Google Cloud bersertifikat. Selama lebih dari 10 tahun saya telah melakukan pengembangan komersial untuk berbagai perusahaan global, terutama dengan fokus pada backend. Saya juga suka berbagi pengetahuan saya. Hari ini saya ingin berbicara tentang Apache Airflow, yang menurut saya adalah alat yang baik untuk membangun jaringan pipa Anda.  





Apa rencananya?





  • Singkatnya, saya akan memberi tahu Anda tentang Airflow untuk mereka yang belum pernah bekerja dengannya. Semua ini dapat ditemukan lebih detail di Internet, jadi saya hanya akan membahas konsep dasar.  





  • Mari kita lihat apa itu  Google Cloud Composer , bagaimana ia menggunakan Airflow, dan menyederhanakan pengembangan pada proyek nyata.  





  • Mari kita lihat  praktik pengembangan dan penerapan  dalam Google Cloud Composer, serta kesulitan dan batasan yang dapat ditemui saat meluncurkan Airflow di Cloud Composer.





  • Dan, tentu saja, saya akan membagikan alat berguna  yang dapat Anda gunakan dalam pekerjaan Anda.  





Aliran udara dalam beberapa paragraf 





Jadi, ini adalah alat untuk merencanakan, membangun, dan memantau pipeline yang ditulis dengan Python. Ada solusi orkestrasi proses out-of-the-box lainnya, seperti Luigi. Tapi sekarang mari kita bicara tentang kelebihan Airflow:  





  1. Sangat bagus untuk membangun jaringan pipa. Inti dari semua yang dia miliki adalah grafik asiklik terarah, yang memungkinkan Anda menerapkan eksekusi tugas secara berurutan atau paralel, serta mengelola urutan dan dependensinya.  





  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