apache/airflow
Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
Apache Airflow とは?
Apache Airflow は、ワークフローの作成、スケジューリング、監視のためのプラットフォームです。ただし、GUI をクリックする代わりに、ワークフローをコードとして記述します。これにより、保守、バージョン管理、テスト、他の人との共有が容易になります。
Airflow では、ワークフローは DAG(有向非巡回グラフ)と呼ばれます。DAG は、一連のタスクと、それらが実行される順序を定義します。Airflow スケジューラは、定義された依存関係を尊重しながら、ワーカーマシンのグループでこれらのタスクを自動的に実行します。また、次のものも提供されます。
- DAG を管理するためのコマンドラインツール
- 本番環境で実行中のパイプラインを表示し、進行状況を監視し、問題をトラブルシューティングするためのWeb インターフェース
何に適していますか?
Airflow は、ほとんど静的で変化が遅いワークフローに最適です。構造が実行ごとに類似している場合です。一般的に使用されるのは次のとおりです。
- データ処理パイプライン(ただし、注意点があります。以下を参照)
- 機械学習ワークフロー — トレーニング、再トレーニング、評価、デプロイメント
- AI/LLM パイプライン — データ準備、ツール呼び出し、モデル呼び出し、評価などのステップを調整します(Airflow はステップをオーケストレーションします。AI エージェント自体としては機能しません)
Airflow にはいくつかの強い意見があります。
- タスクは冪等である必要があります。タスクを 2 回実行しても同じ結果が得られ、重複データが作成されないようにする必要があります。
- タスクは相互に大量のデータを渡すべきではありません。XCom と呼ばれる機能を使用して小さなメタデータを渡すことはできますが、大量のデータは外部サービスで処理する必要があります。
- ストリーミングソリューションではありませんが、リアルタイムデータをバッチで処理するためによく使用されます(ストリームから定期的にデータをプルします)。
同様のプロジェクトには、Luigi、Oozie、Azkaban があります。
コア原則
- 動的 — パイプラインはコードで定義されるため、DAG をプログラムで生成し、パラメータ化できます。
- 拡張可能 — Airflow には多くの組み込みオペレーター(タスクタイプ)があり、ニーズに合わせて拡張できます。
- 柔軟 — Jinja テンプレートエンジンを使用し、豊富なカスタマイズが可能です。
要件
Airflow は特定のバージョンでテストされています。
- Python — 例:安定版 3.3.2 では 3.10–3.14
- プラットフォーム — AMD64/ARM64
- Kubernetes — さまざまなバージョン(例:安定版では 1.30–1.35)
- データベース — PostgreSQL、MySQL、SQLite(SQLite はテストのみで、本番環境では使用不可)
重要な注意事項:
- MariaDB はテストされておらず、推奨もされていません。
- Airflow は POSIX 準拠のオペレーティングシステム(Linux、macOS)で動作します。Windows では、WSL2 または Linux コンテナを使用できます。
- 公式 Docker イメージは Debian Bookworm を使用しています。
インストール方法
Airflow は PyPI で apache-airflow パッケージとして公開されています。Airflow はライブラリとアプリケーションの両方であるため、インストールは難しい場合があります。依存関係がオープンなため、pip install apache-airflow だけでは常に機能するとは限りません。推奨される方法は、既知の良好な依存関係バージョンを固定する制約ファイルを使用することです。
pip install 'apache-airflow==3.3.2' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.3.2/constraints-3.10.txt"
apache-airflow[postgres,google] のように extras を追加することもできます。
インストールには pip と uv のみが公式にサポートされています。Poetry や pip-tools などのツールはサポートされていません(ただし、制約ファイルを変換すれば使用できます)。
Airflow を入手する他の方法
これらは「便利な」パッケージです。公式の ASF リリースではありませんが、公式ソースからビルドされています。
- PyPI リリース —
pip経由 - Docker イメージ — Kubernetes、docker-compose など用
- GitHub タグ — ソースコードを取得するため
ユーザーインターフェース
Airflow Web UI にはいくつかのビューがあります。
- DAGs — すべてのワークフローの概要
- Assets — データアセットとその依存関係のビュー
- Grid — DAG の実行の時間ベースのグリッドビュー
- Graph — DAG のタスク依存関係と現在のステータスの視覚化
- Home — 環境の概要統計
- Backfill — 特定の日付範囲で DAG を実行
- Code — DAG のソースコードをすばやく表示
バージョン管理
Airflow 2.0.0 以降、このプロジェクトは厳格なセマンティックバージョニング(SemVer)に従っています。これはコア Airflow とプロバイダーパッケージに個別に適用されます。
プロジェクトガバナンス
Apache Airflow は Apache Software Foundation プロジェクトです。公式ソースコードリリース:
- ASF リリースポリシーに従う
- 暗号署名されている
- プロジェクトの PMC メンバーによる投票で決定される
大規模なコミュニティもあります。Slack チャンネルに参加したり、コードを貢献したりできます(詳細は README の貢献セクションを参照)。
この説明は、プロジェクトの README の内容のみに基づいています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト