Airflow как оркестратор ETL/ELT процессов
Telegram @data_studyETL (extract, transform, load) - процесс извлечения, обработки и загрузки данных между системами или хранилищами данных. По другому его могут называть data pipeline.
На рынке существует множество инструментов, которые используются для ETL разработки.
Одним из них является Airflow - open source решение для создания, оркестрации и управления потоками данных (data pipeline).
Airflow был создан сразу же как open source решение в компании Airbnb в 2014 году, чуть позже попал в программу Apache Software Foundation’s Incubator.
Главным компонентом в работе Airflow является DAG (Directed Acyclic Graphs). DAG состоит из отдельных task (задач), каждая из которых включает в себя некоторую логику работы с данными. В конечно итоге DAG как конструктор выстраивается из взаимосвязанных между собой задач, которые должны выполняться последовательно.
Например, DAG определяет внутри себя 4 таски: a, b, c, d. Каждая из этих тасок включает в себя некоторые шаги в логике обработки данных. DAG же в свою очередь будет определять набор тасок, их взаимосвязь между собой, а также порядок выполнения. Помимо этого, DAG определяет расписание запуска всего рабочего процесса обработки данных.


Языком разработки рабочих процессов на Airflow является Python.
Архитектура Airflow для работы включает в себя несколько элементов:
- scheduler (запускает рабочие процессы по расписанию, передает данные в executor для запуска tasks)
- executor (отвечает за выполнение tasks): может быть как частью scheduler, так и вынесен в отдельные workers
- webserver (предоставляет пользовательский интерфейс в браузере для управления и настройки процессов)
- folder of DAG files (считываются scheduler и executor для запуска DAGов)
- metadata database (используется компонентами архитектуры для записи метаданных о работе)

Если говорить обобщенно о проектах извлечения и обработки данных, то Airflow для ETL процесса будет занимать место согласно схеме ниже

Всегда можно говорить о 3-х главных компонентах:
- Системы источники данных (то, откуда мы извлекаем данные)
- Аналитическое хранилище данных (может быть представлено в разных решениях: Data Warehouse, Data Lake, Data Platform)
- Система потребитель данных (часто эту роль выполняют системы принятия решений, BI инструменты с настроенной отчетностью)
Между этими компонентами конечно должен быть настроен поток данных, который и может быть реализован Airflow и другими инструментами для ETL/ELT разработки.
P.S. Не забываем, что каждый инструмент может быть выбран под конкретные бизнес-задачи, которые он может покрыть. Про другие ETL/ELT инструменты будем говорить в следующих постах.
Ссылка на официальную документацию