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:
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.
. open-sourse , .
-: , .
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. operators, hooks, macros â , 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 :)