Apache Airflow или Argoproj для длительных задач и DAG-задач на kubernetes
У нас есть много длительных, интенсивно работающих с памятью / процессором заданий в k8s, которые выполняются с сельдереем на kubernetes на облачной платформе Google. Однако у нас большие проблемы с масштабированием / повторной попыткой / мониторингом / предупреждением / гарантией доставки. Мы хотим перейти от сельдерея к более продвинутой структуре.
Есть сравнение: https://github.com/argoproj/argo/issues/849 но этого недостаточно.
Расход воздуха:
- имеет лучшую поддержку в сообществе ~400 против ~12 тегов на SO, 13k звезд против ~3.5k звезд
- Python способ определения потоков чувствует себя лучше, чем просто использование yamls
- поддержка в GCP как продукт: Cloud Composer
- лучшая панель приборов
- некоторые хорошие операторы, такие как оператор электронной почты
Argoproj:
- Родная поддержка Kubernetes (который я полагаю, как-то лучше)
- Поддерживает CI/CD/ события, которые могут пригодиться в будущем
- (Вероятно) лучшая поддержка для передачи результатов от одного задания к другому (в механизме Airflow xcom)
Наши DAG не так уж и сложны. Какие из этих рамок мы должны выбрать?
1 ответ
Idiomatic Airflow не предназначен для самостоятельного выполнения длительных заданий. Скорее, Airflow предназначен для того, чтобы выполнять функции запуска вычислительных заданий в другом сервисе (это делается с операторами) при мониторинге состояния заданного вычислительного задания (это делается с помощью датчиков).
В вашем примере любая вычислительная задача, необходимая в Airflow, будет инициирована соответствующим оператором для данной используемой услуги (для упрощения этого в Airflow есть зацепки GCP), и соответствующий датчик определит, когда задача была завершена, и более не блокировал последующие задачи в зависимости на этой операции.
Хотя он не очень хорошо знаком с деталями Argoproj, он, по-видимому, не столько "система планирования", как Airflow, а скорее система, используемая для организации и выполнения большей части вычислений.