Executors отвечают за исполнение задач. В Airflow есть несколько видов исполнителей:
В боевой среде чаще всего встречается CeleryExecutor, который, как можно догадаться, использует Celery. Но обо всём по порядку.
Этот исполнитель установлен в качестве значения по умолчанию в airflow.cfg
у параметра executor
и представляет из себя простой вид воркера, который не умеет запускать параллельные задачи. Как можно догадаться, в конкретный момент времени выполняться может только одна единственная задача. Этот вид исполнителя используют в ознакомительных целях, для продуктивной среды он категорически не подходит.
Если вы используете SQLite3, то ограничены этим типом исполнения задач.
Этот вид исполнителя даёт максимальные ощущения продуктивной среды в тестовом окружении (или окружении разработки). Он умеет выполнять задачи параллельно (например, исполнять несколько DAGов одновременно) путём порождения дочерних процессов, но всё же не совсем предназначен для продакшена ввиду ряда проблем:
При небольшом количестве задач всё же можно использовать LocalExecutor, т.к. это проще, быстрее и не требует настройки дополнительных сервисов. Этот тип выполнения неплохой старт в освоении возможностей Apache Airflow.
На протяжении курса мы будем использовать его, в конце я покажу как настроить выполнение на базе Celery.
Наиболее популярный в продакшене вид исполнения задач. Под капотом использует всю магию таск-менеджера Celery, а значит тянет за собой все зависимости этого инструмента. Чтобы использовать CeleryExecutor необходимо дополнительно настроить брокер сообщений. Чаще всего используют Redis либо RabbitMQ. CeleryExecutor даёт возможность поднять масштабируемый и отказоустойчивый кластер. Исполнение распределяется по разным машинам (виртуальным или физическим), а значит выход из строя одной машины не повлечёт за собой остановку работы Airflow.
Очень похож на CeleryExecutor, но только вместо Celery использует инструмент Dask, в частности dask-distributed.
Относительно новый вид исполнения задач на кластере Kubernetes. Задачи исполняются как новые pod инстансы. В связи с развитием контейнеров и их повсеместным использованием, этот тип исполнения может быть интересен многим. Но у него есть минус — если у вас нет Kubernetes кластера, то настроить его непросто.
Boris Yugay 24 Октябрь 2024
До сих пор выбор следующей темы справа и нажатие кнопки Next приводили к одному результату :) Обращайте внимание на "Step 1 of 3" и нажимайте Next.