Step 1 of 3

Executors отвечают за исполнение задач. В Airflow есть несколько видов исполнителей:

  • SequentialExecutor
  • LocalExecutor
  • CeleryExecutor
  • DaskExecutor
  • KubernetesExecutor

В боевой среде чаще всего встречается CeleryExecutor, который, как можно догадаться, использует Celery. Но обо всём по порядку.

SequentialExecutor

Этот исполнитель установлен в качестве значения по умолчанию в airflow.cfg у параметра executor и представляет из себя простой вид воркера, который не умеет запускать параллельные задачи. Как можно догадаться, в конкретный момент времени выполняться может только одна единственная задача. Этот вид исполнителя используют в ознакомительных целях, для продуктивной среды он категорически не подходит.

Если вы используете SQLite3, то ограничены этим типом исполнения задач.

LocalExecutor

Этот вид исполнителя даёт максимальные ощущения продуктивной среды в тестовом окружении (или окружении разработки). Он умеет выполнять задачи параллельно (например, исполнять несколько DAGов одновременно) путём порождения дочерних процессов, но всё же не совсем предназначен для продакшена ввиду ряда проблем:

  1. Ограничение при масштабировании (возможно эта проблема не будет актуальна для вас), исполнитель этого типа ограничен ресурсами машины на котором он запущен. О распределенном выполнении можно забыть.
  2. Отсутствие отказоустойчивости. Если машина с этим типом воркера падает, то задачи перестают исполняться до момента её возвращения в строй.

При небольшом количестве задач всё же можно использовать LocalExecutor, т.к. это проще, быстрее и не требует настройки дополнительных сервисов. Этот тип выполнения неплохой старт в освоении возможностей Apache Airflow.

На протяжении курса мы будем использовать его, в конце я покажу как настроить выполнение на базе Celery.

CeleryExecutor

Наиболее популярный в продакшене вид исполнения задач. Под капотом использует всю магию таск-менеджера Celery, а значит тянет за собой все зависимости этого инструмента. Чтобы использовать CeleryExecutor необходимо дополнительно настроить брокер сообщений. Чаще всего используют Redis либо RabbitMQ. CeleryExecutor даёт возможность поднять масштабируемый и отказоустойчивый кластер. Исполнение распределяется по разным машинам (виртуальным или физическим), а значит выход из строя одной машины не повлечёт за собой остановку работы Airflow.

DaskExecutor

Очень похож на CeleryExecutor, но только вместо Celery использует инструмент Dask, в частности dask-distributed.

KubernetesExecutor

Относительно новый вид исполнения задач на кластере Kubernetes. Задачи исполняются как новые pod инстансы. В связи с развитием контейнеров и их повсеместным использованием, этот тип исполнения может быть интересен многим. Но у него есть минус — если у вас нет Kubernetes кластера, то настроить его непросто.

Comments