Чем отличаются Apache AirFlow и Luigi: выбираем оркестратор для Big Data Pipeline’ов

Apache Luigi vs AirFlow, курсы Airflow, обучение Airflow, обучение инженеров данных, инженерия данных, Big Data, Большие данные, обработка данных, Airflow, DataOps, Python, , ETL

Продвигая наши курсы по Apache AirFlow для инженеров Big Data, сегодня расскажем, чем этот фреймворк отличается от Luigi – другого достаточно известного инструмента оркестровки ETL-процессов и конвейеров обработки больших данных. В этой статье мы собрали для вас сходства и отличия Apache AirFlow и Luigi, а также их достоинства и недостатки, особенно важные для дата-инженера.

Немного истории: как появились Apache AirFlow и Luigi

Вчера мы упоминали, что функциональные возможности и популярность Apache AirFlow и Luigi находятся примерно на одном уровне. Однако, на конец 2020 года именно Apache AirFlow считается ведущим DataOps-инструментом для автоматизированной оркестрации конвейеров обработки больших данных (Big Data Pipeline). Это обусловлено его ориентацией на крупные production-решения и рядом других достоинств. Разработанный в 2014 году в компании Airbnb, через 2 года AirFlow был передан в фонд Apache Software Foundation. С 2019 года этот фреймворк официально стал проектом Apache 1-го уровня.

Похожий путь и у Luigi, который был создан в Spotify для запуска сложных конвейеров в рекомендательной системе на базе Apache Hive, Spark и других технологий Big Data. В качестве open-source проекта под лицензией Apache 2.0 Luigi стал доступен в 2012 году. Эта система представляет собой Python-пакет, который позволяет распараллеливать рабочие процессы. Но, в отличие от AirFlow, в Luigi нет планировщика для запуска задач по расписанию. Поэтому пользователям приходится полагаться на cron для планирования заданий [1]. Более подробно о сходствах и отличиях этих оркестраторов Big Data задач мы поговорим далее.

Что общего у 2-х самых популярных средств оркестровки Big Data Pipeline’ов: 5 главных сходств

Хотя Airflow и Luigi имеют разные функции, у них много общего [1]:

  • наличие наглядного веб-GUI для визуализации конвейеров обработки данных;
  • использование Python в качестве языка описания DAG;
  • статус open-source проекта и отсутствие платы за использование;
  • пакетный характер работы с данными (batch processing);
  • популярность в области Big Data среди известных компаний. В частности, Airflow используется в Airbnb, Walmart, Lamoda, Mail.ru Group [2]. Luigi применяется в Spotify, Okko, Deloitte, ЦИАН [3].

Разговор про отличия Airflow и Luigi, в основном, сводится к перечислению функциональных возможностей, которые есть у первого и отсутствуют у второго. Такие ограничения считаются недостатками Apache Luigi, о чем мы поговорим далее.

Что не так с Apache Luigi: 7 главных проблем

Ключевыми минусами Apache Luigi, которые особенно значимы в практической детальности инженера Big Data, можно назвать следующие:

  • отсутствие механизма запуска задач по расписанию, что вызывает необходимость использования crontab [4]. Однако, в Luigi имеется центральный планировщик и возможности использования календаря, что в ряде случаев дает большую гибкость по сравнению с Airflow, где нет календарного расписания [1].
  • трудности масштабирования из-за слишком тесной связи DAG-задач с cron-заданиями, что ограничивает количество рабочих процессов. Luigi не может автоматически распределять задачи между worker’ами на разных узлах подобно Celery в AirFlow, используя единый брокер сообщений, такой как, Redis или RabbitMQ [1, 4], о чем мы писали здесь.
  • неудобство GUI – Luigi, в отличие от AirFlow, не позволяет пользователям просматривать несколько задач DAG перед выполнением конвейера. В целом интерфейс Luigi выглядит аскетичным и «запутанным» по сравнению с AirFlow. В частности, чтобы просмотреть логи задач и исполнение кода, нужно потратить достаточно времени на поиск этих данных [1]. Также нельзя получить метаинформацию о выполняемых задачах, узнать сведения по запускаемым задачам и процессам обработки данных. Нет способа, например, получить общий список задач, которые зависят от данной задачи. По сути, веб-интерфейс планировщика позволяет только увидеть, почему тот или иной набор задач не выполняется [5].
  • Перезапуск конвейеров данных невозможен [6], хотя если в одной из задач произошла ошибка, DAG восстановится самостоятельно, не нужно перезапускать весь конвейер снова [4]. А уведомить о возникновении ошибок Luigi может email-сообщением [5].
  • Отсутствие предварительной проверки выполнения задачи. Проверка того, выполнена ли задача, происходит только во время построения графа зависимостей. Поэтому при запуске pipeline’а чаще, чем общее время его выполнения, может возникнуть ситуация, что запущены две одинаковые задачи [5].
Luigi, ETL, DAG, big data task sheduler
Интерфейс Apache Luigi

Подводя итог описанию сходств и отличий Apache AirFlow и Luigi, подчеркнем еще раз, что назвать эти фреймворки равнозначными конкурентами не совсем корректно из-за разного набора функциональных возможностей и ориентации на production-использование в масштабных Big Data системах. Тем не менее, несмотря на наличие ряда ограничений по сравнению с Apache AirFlow, Luigi подходит для оркестровки задач обработки данных и ETL-процессов в небольших проектах, а может применяться в рамках обучения основам инженерии Big Data. В частности, Luigi помогает дата-инженеру объединить множество задач, от запроса Hive и Hadoop-задания на Java, Spark-приложения на Scala или Python до дампа таблицы базы данных еще. Как и Apache AirFlow, Luigi поддерживает выполнение заданий Apache Hive, Pig и MapReduce в Hadoop на Python, включая работу с HDFS и локальными файлами, обеспечивая атомарность всех операций файловой системы. Это означает, что Data Pipeline не выйдет из строя в состоянии, содержащем частичные данные [3]. Что нового в мажорном релизе Apache Airflow 2.0, который вышел в декабре 2020 года, читайте здесь.

Узнайте больше про инженерию больших данных на примере администрирования и эксплуатации Apache Airflow в production на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

 

Источники

  1. https://www.xplenty.com/blog/airflow-vs-luigi
  2. https://habr.com/ru/company/mailru/blog/339392/
  3. https://github.com/spotify/luigi
  4. https://khashtamov.com/ru/data-pipeline-luigi-python/
  5. https://habr.com/ru/company/otus/blog/339904/
  6. https://www.astronomer.io/guides/airflow-vs-luigi/