Luigi は、バッチ ジョブの複雑なパイプラインの構築に役立つ Python (3.7、3.8、3.9、3.10、3.11、3.12 でテスト済み) パッケージです。依存関係の解決、ワークフロー管理、視覚化、エラーの処理、コマンド ラインの統合などを処理します。
pip install luigi
実行して、PyPI から最新の安定バージョンをインストールします。最新リリースのドキュメントは readthedocs でホストされています。
pip install luigi[toml]
実行して、TOML ベースの構成サポートを備えた Luigi をインストールします。
最先端のコードについては、 pip install git+https://github.com/spotify/luigi.git
。最新のドキュメントも入手できます。
Luigi の目的は、通常、長時間実行されるバッチ プロセスに関連するすべての配管に対処することです。多くのタスクを連鎖させて自動化したい場合、失敗が発生します。これらのタスクは何でも構いませんが、通常は、Hadoop ジョブ、データベースへのデータのダンプ、データベースからのデータのダンプ、機械学習アルゴリズムの実行など、長時間実行されるタスクです。
Hive、Pig、Cascading など、データ処理の下位レベルの側面に焦点を当てた他のソフトウェア パッケージもあります。ルイージはこれらに代わるフレームワークではありません。代わりに、多くのタスクをつなぎ合わせるのに役立ちます。各タスクは、Hive クエリ、Java の Hadoop ジョブ、Scala または Python の Spark ジョブ、Python スニペット、データベースからのテーブルのダンプなどにすることができます。数千のタスクで構成され、完了までに数日から数週間かかる、長時間実行されるパイプラインを構築するのは簡単です。 Luigi はワークフロー管理の多くを処理してくれるので、ユーザーはタスク自体とその依存関係に集中できます。
ほぼすべてのタスクを作成できますが、Luigi には、使用するいくつかの一般的なタスク テンプレートのツールボックスも付属しています。これには、Hive ジョブや Pig ジョブだけでなく、Hadoop での Python mapreduce ジョブの実行のサポートも含まれています。また、HDFS のファイル システム抽象化と、すべてのファイル システム操作がアトミックであることを保証するローカル ファイルも付属しています。これは、部分的なデータを含む状態でデータ パイプラインがクラッシュしないことを意味するため、重要です。
Luigi サーバーには Web インターフェイスも付属しているため、すべてのタスクを検索してフィルターすることができます。
ルイージが何を行うのかを理解していただくために、これは実稼働環境で実行しているもののスクリーンショットです。 Luigi のビジュアライザーを使用すると、ワークフローの依存関係グラフの優れた視覚的な概要が得られます。各ノードは、実行する必要があるタスクを表します。緑色のタスクはすでに完了していますが、黄色のタスクはまだ実行されていません。これらのタスクのほとんどは Hadoop ジョブですが、ローカルで実行してデータ ファイルを構築するものもいくつかあります。
概念的には、Luigi は GNU Make に似ており、特定のタスクがあり、これらのタスクが他のタスクに依存する場合があります。ウージーとアズカバンにもいくつかの類似点があります。大きな違いの 1 つは、Luigi が Hadoop 専用に構築されているだけではなく、他の種類のタスクで簡単に拡張できることです。
Luigi のすべては Python で作られています。 XML 構成や同様の外部データ ファイルの代わりに、依存関係グラフはPython 内で指定されます。これにより、タスクの複雑な依存関係グラフを簡単に構築できます。依存関係には、日付代数や、同じタスクの他のバージョンへの再帰参照が含まれる場合があります。ただし、ワークフローは、Pig スクリプトの実行やファイルの scp 実行など、Python にはないものをトリガーすることができます。
私たちは Spotify の内部で Luigi を使用して、複雑な依存関係グラフに整理された毎日何千ものタスクを実行しています。これらのタスクのほとんどは Hadoop ジョブです。 Luigi は、推奨事項、トップリスト、A/B テスト分析、外部レポート、内部ダッシュボードなどを含むあらゆる種類のものを強化するインフラストラクチャを提供します。
ルイージはオープンソースであり、登録の壁がないため、ルイージ ユーザーの正確な数は不明です。しかし、ユニークな寄稿者の数に基づくと、数百の企業がそれを使用すると予想されます。一部のユーザーは、ルイージに関するブログ投稿を書いたり、プレゼンテーションを開催したりしています。
さらにいくつかの企業が Luigi を使用していますが、それについて書く機会がまだありません。
貴社をここに追加していただければ幸いです。 GitHub で PR を送信するだけです。
Luigi は、主に Erik Bernhardsson と Elias Freider によって Spotify で構築されました。 2012 年末のオープンソース化以来、他の多くの人々が貢献してきました。Arash Rouhani 氏は 2015 年から 2019 年までチーフメンテナーを務め、現在は Spotify のデータチームが Luigi 氏のメンテナを務めています。