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 の内容のみに基づいています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト