Luigi — это пакет Python (проверены версии 3.7, 3.8, 3.9, 3.10, 3.11, 3.12), который помогает создавать сложные конвейеры пакетных заданий. Он занимается разрешением зависимостей, управлением рабочими процессами, визуализацией, обработкой сбоев, интеграцией командной строки и многим другим.
Запустите pip install luigi
чтобы установить последнюю стабильную версию из PyPI. Документация для последней версии размещена на readthedocs.
Запустите pip install luigi[toml]
, чтобы установить Luigi с поддержкой конфигураций на основе TOML.
Чтобы получить новейший код, pip install git+https://github.com/spotify/luigi.git
. Также доступна новейшая документация.
Цель Луиджи — решить все проблемы, обычно связанные с длительными пакетными процессами. Вы хотите связать множество задач, автоматизировать их, и будут сбои. Эти задачи могут быть любыми, но обычно это долго выполняемые задачи, такие как задания Hadoop, выгрузка данных в/из баз данных, запуск алгоритмов машинного обучения или что-то еще.
Существуют и другие пакеты программного обеспечения, которые фокусируются на аспектах обработки данных более низкого уровня, например Hive, Pig или Cascading. Луиджи не является основой для их замены. Вместо этого он помогает объединить множество задач, где каждая задача может быть запросом Hive, заданием Hadoop в Java, заданием Spark в Scala или Python, фрагментом Python, выгрузкой таблицы из базы данных или чем-то еще. Легко создать долгосрочные конвейеры, включающие тысячи задач, выполнение которых занимает дни или недели. Луиджи берет на себя большую часть управления рабочим процессом, чтобы вы могли сосредоточиться на самих задачах и их зависимостях.
Вы можете создать практически любую задачу, которую захотите, но Luigi также поставляется с набором инструментов из нескольких распространенных шаблонов задач, которые вы можете использовать. Он включает поддержку запуска заданий Python Mapreduce в Hadoop, а также заданий Hive и Pig. Он также поставляется с абстракциями файловой системы для HDFS и локальными файлами, что гарантирует атомарность всех операций файловой системы. Это важно, поскольку означает, что ваш конвейер данных не выйдет из строя в состоянии, содержащем частичные данные.
Сервер Luigi также оснащен веб-интерфейсом, поэтому вы можете искать и фильтровать все свои задачи.
Просто чтобы дать вам представление о том, чем занимается Луиджи, это скриншот того, что мы работаем в производстве. Используя визуализатор Луиджи, мы получаем хороший визуальный обзор графа зависимостей рабочего процесса. Каждый узел представляет задачу, которую необходимо выполнить. Зеленые задачи уже выполнены, а желтые еще предстоит выполнить. Большинство этих задач представляют собой задания Hadoop, но есть и задачи, которые выполняются локально и создают файлы данных.
Концептуально Luigi похож на GNU Make, где у вас есть определенные задачи, а эти задачи, в свою очередь, могут зависеть от других задач. Есть также некоторое сходство с Узи и Азкабаном. Одним из основных отличий является то, что Luigi не просто создан специально для Hadoop, и его легко расширить с помощью других задач.
Все в Луиджи написано на Python. Вместо конфигурации XML или аналогичных файлов внешних данных граф зависимостей указывается в Python . Это упрощает создание сложных графов зависимостей задач, где зависимости могут включать алгебру дат или рекурсивные ссылки на другие версии одной и той же задачи. Однако рабочий процесс может запускать действия, не связанные с Python, например запуск сценариев Pig или копирование файлов scp.
Мы используем Luigi внутри Spotify для ежедневного выполнения тысяч задач, организованных в сложные графы зависимостей. Большинство этих задач представляют собой задания Hadoop. Луиджи предоставляет инфраструктуру, которая поддерживает самые разные функции, включая рекомендации, топ-листы, анализ A/B-тестов, внешние отчеты, внутренние информационные панели и т. д.
Поскольку Luigi имеет открытый исходный код и не имеет каких-либо регистрационных стен, точное количество пользователей Luigi неизвестно. Но, учитывая количество уникальных участников, мы ожидаем, что его будут использовать сотни предприятий. Некоторые пользователи написали сообщения в блогах или провели презентации о Луиджи:
Еще несколько компаний используют Luigi, но у них пока не было возможности написать об этом:
Мы более чем рады, что ваша компания была добавлена сюда. Просто отправьте PR на GitHub.
Luigi был создан на Spotify, в основном Эриком Бернхардссоном и Элиасом Фрейдером. Многие другие люди внесли свой вклад с момента открытия исходного кода в конце 2012 года. Араш Рухани был главным специалистом по сопровождению с 2015 по 2019 год, а теперь команда данных Spotify поддерживает Луиджи.