Apache Airflow vs Beam: сходства и отличия

Автор Категория ,
Apache Airflow vs Beam: сходства и отличия

В этой статье по обучению дата-инженеров разберем, что такое Apache Beam, чем этот фреймворк отличается от AirFlow и что между ними общего. На первый взгляд Apache Airflow и Beam являются конкурентами: они предназначены для организации процессов обработки данных в определенном порядке. Оба инструмента являются open-source проектами, широко используются и поддерживаются сообществом разработчиков. Они визуализируют этапы и зависимости в виде ориентированных ациклических графов (DAG) через наглядный GUI. Однако, несмотря на эти схожие черты, одно не заменяет другого. Чтобы понять, когда и что следует использовать, рассмотрим каждое средство подробнее.

Краткий ликбез по Apache Airflow

Apache Airflow – это инструмент управления рабочим процессом для планирования, генерации и отслеживания пакетных задач обработки данных. Он представляет собой гибкий планировщик задач и оркестратор данных, подходящий для большинства управления ETL/ELT-заданиями, ML-операций, функций мониторинга и администрирования различных систем. Используя операторы bash и Python, Airflow может запускать любой соответствующие скрипты. В Airflow каждая задача является частью DAG-графа и состоит из готовых операторов или пользовательского кода на Python. Задачи могут зависеть друг от друга, т.е. запуск одной стартует только по завершении другой или параллельно с ней. Впрочем, управление сложными зависимостями между разными DAG’ами – не самая сильная сторона AirFlow, о чем мы писали здесь и здесь.

Тем не менее, Airflow не случайно очень востребован у дата-инженеров. Его ключевыми преимуществами являются следующие:

  • Python как основной язык определения задач и операторов снижает порог входа в технологию. Хотя любой шаг DAG можно написать на любом языке программирования, Python считается лидером у дата-инженеров, аналитиков и Data Science специалистов, которые являются пользователями рабочих процессов AirFlow, которые легко тестировать, поддерживать и совместно использовать.
  • Удобный пользовательский интерфейс, в т.ч. включение и выключение расписаний, визуализация прогресса DAG, наблюдение за исполняющимися конвейерами, доступ к журналам, возможность спроектировать собственный DAG без строчки кода с помощью готовых блоков. Движок Jinja для создания шаблонов позволяет параметризовать скрипты.
  • масштабируемость по горизонтали и по вертикали – в последней версии Airflow 2.2 можно использовать фреймворк asyncio для почти бесконечного масштабирования задач асинхронной оркестрации с минимальным потреблением вычислительных ресурсов.
  • популярность – активное, постоянно растущее сообщество разработчиков ПО с открытым исходным кодом. В сентябре 2021 года Airflow превзошел Apache Spark как инструмент Apache Software Foundation с наибольшим количеством участников.
  • Доступность – можно настроить и запустить Airflow локально или выбрать один из нескольких управляемых сервисов (Astronomer, Google Cloud Composer, Amazon MWAA).
  • независимость от обработки данных – Airflow не знает ничего о том, как именно обрабатываются данные внутри блоков его DAG. Это упрощает замену любых конкретных сервисов, например, можно перейти от Spark к Flink в рамках одного конвейера обработки данных.

Разумеется, этот универсальный batch-оркестратор имеет свои недостатки и ограничения. В частности, он изначально разработан как пакетный фреймворк и не поддерживает сценарии потоковой передачи данных. Кроме того, Airflow не просто настроить и управлять им из-за распределенного характера. Однако это ограничение смягчено за счет использования управляемых сервисов и Helm Chart, что позволяет легко настраивать распределенное развертывание Kubernetes.

Что такое Apache Beam

Apache Beam – это скорее уровень абстракции, чем фреймворк, который поддерживается Spark, Flink, Google Cloud Dataflow и другими средами обработки данных. Beam создает задания пакетной и потоковой обработки, становясь движком для потока данных. Как и в AirFlow, основой рабочего процесса здесь является DAG, узлы которого создают потенциально разветвляющийся конвейер. Все узлы DAG активны одновременно и передают друг другу фрагменты данных, а каждый из них выполняет некоторую обработку. Благодаря единой модели пакетные и потоковые данные обрабатываются в Beam одинаково. Унифицированный подход Beam позволяет переключаться между несколькими движками: Apache Spark, Flink, Samza и Google Cloud Dataflow за счет включения их в единую модель Beam. Главными плюсами Apache Beam считаются следующие:

  • унификация пакетной и потоковой передачи – хотя многие системы могут выполнять пакетные и потоковые операции, но обычно они делают это через отдельные API. Исключение – новая версия Apache Flink, выпущенная осенью 2021 года, о чем мы писали здесь. В Beam пакетная обработка и потоковая передача – это не две ортогональные абстракции, а всего лишь две точки в пространстве задержки, полноты и стоимости обработки данных, между которыми можно свободно перемещаться. Например, создать пакетный конвейер сегодня и изменить его на потоковый завтра, когда требования к задержке обработки изменятся. Причем все это делается в рамках одного API. Подобно Apache Spark, Flink и Kafka, Beam поддерживает работу с окнами (разделение данных во время обработки потока), водяные знаки и триггеры для обработки событий, которые приходят с опозданием или не по порядку.
  • переносимость между средами выполнения – одним и тем же конвейером в Beam можно управлять различными способами, т.к. формы данных и требования среды выполнения разделены. Нет необходимости переписывать код при переходе из локальной среды в облако или с устаревшей системы на что-то более новое.
  • API с высоким уровнем абстракции – поскольку данные, код и среда постоянно меняются, API-интерфейсы Beam концентрируются на захвате изменений данных и логики. Это важно для переносимости и дает средам выполнения большую свободу. Например, исходные API Beam предназначены для того, чтобы избежать чрезмерного определения сегментирования внутри конвейера: они предоставляют вычислительным движкам возможность динамически перераспределить задания между доступными машинами, чтобы повысить эффективность утилизации ресурсов кластера.
  • доступность – Apache Beam предоставляется как управляемый сервис в Google Cloud Platform.

Справедливости ради стоит отметить основные ограничения Apache Beam:

  • не поддерживает язык R;
  • модель потока данных Beam должна обновляться всякий раз при изменении возможностей вычислительных движков (базовых механизмов выполнения): Spark, Flink, Samza и пр.
  • из-за унифицированной модели производительность Beam может быть ниже, чем при прямом использовании базовых механизмов выполнения.
  • Иногда встречается нерелевантное потребление ресурсов, которые должны быть предоставлены из новых виртуальных машин в потоке данных Google Cloud Platform. Эта одна из наиболее часто используемых на практике сред выполнения Beam является не самой быстрой. По сравнению с AirFlow, операторы DAG могут выполняться в несколько раз дольше.

Versus или вместе: что и когда выбирать

Вспомнив назначение и ключевые возможности каждого из инструментов, можно сделать объективные выводы об их конкуренции между собой. Хотя Apache Airflow и Beam относятся к средствам Workflow Manager, сценарии их использования отличаются. Airflow отлично справляется с оркестровкой данных и управлением конвейерами, тогда как Beam – это унифицированный инструмент для создания конвейеров больших данных, выполняемых в разных системах обработки данных: Spark, Flink, Samza и пр. Считается, что Beam больше ориентирован на машинное обучение, а Airflow может выполнять любую оркестровку данных.

Beam отлично подходит для работы с потоковыми и пакетными заданиями в рамках одного API и эффективен для задач параллельной обработки данных. Beam также можно использовать для ETL-операций и интеграции данных, связи Flink и Spark, построения автомасштабируемых конвейеров в реальном времени и операций с огромными пакетами в MLOps. Airflow идеально подходит для оркестровки данных и создает надежные конвейеры для задач, которые могут быть запущены только последовательно. С помощью Airflow также можно получить информацию о происхождении данных.

Таким образом, Airflow и Beam – это не конкуренты, они могут успешно работать вместе: Airflow для планирования и запуска заданий, в т.ч. Beam. Выбор инструмента зависит от конкретных потребностей. Пример использования Beam в реализации гибридной Лямбда-архитектуры платформы данных на сервисах Google Cloud Platform читайте в нашей здесь и здесь.

Больше деталей про администрирование и эксплуатацию Apache AirFlow для эффективной по организации ETL/ELT-процессов в аналитике больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://www.astronomer.io/blog/airflow-vs-apache-beam
  2. https://airflow.apache.org/docs/apache-airflow/stable/index.html
  3. https://beam.apache.org/documentation/