Skip to content
Latchkey

Apache Airflowとは?ワークフローオーケストレーターを解説

Apache Airflowは、PythonのDAGとして定義されたデータワークフローを作成、スケジュール、監視するためのオープンソースプラットフォームです。

Apache Airflowは、データエンジニアリングの主力orchestratorです。複雑な多段階のワークフローをPythonで定義し、スケジュールし、実行を監視できます。組み込みのretry、依存関係、そして各taskの状態を表示するWeb UIを備えています。

Airflowとは何か

Airflowはワークフローオーケストレーションプラットフォームです。DAG - taskの有向非巡回グラフ - をPythonコードとして記述すると、Airflowはtaskを依存順にスケジュールして実行し、retry、backfill、アラートを処理します。ETLおよびELTのpipelineの実行に広く使われています。

DAGとtask

各AirflowのDAGは、相互に依存関係を持つtaskの集まりです。taskはSQLクエリの実行、APIの呼び出し、あるいはSparkのjobのトリガーなどを行えます。Airflowは何を並列実行できて何が待つ必要があるかを判断し、retryポリシーに従って失敗したtaskを再実行します。

スケジュールと監視

AirflowはDAGをcronのような間隔でスケジュールし、各runをメタデータデータベースで追跡して、ステータス、ログ、実行時間をWeb UIに表示します。オペレーターは、コードを書き直すことなく、失敗したtaskを再実行したり、日付範囲をbackfillしたりできます。

AirflowとCI/CD

Airflowはデータpipelineをオーケストレーションし、CI/CDはそれらを定義するDAGコードを配信します。良いセットアップでは、Airflowにdeployする前に、CIでDAGをlintしてユニットテストし、parseできて循環がないことを確認します。

Testing Airflow DAGs in CI
steps:
  - run: pip install apache-airflow
  - run: python -c "import dags.my_pipeline"   # import check
  - run: pytest tests/dags                      # task unit tests

Latchkeyノート

DAGを検証するCIのjobはAirflowとそのproviderをインストールするため重くなります。Latchkeyでは、この環境をrun間でcacheすることでDAG検証のjobが高速になり、auto-retryがインストール中の一時的なパッケージインデックスやproviderダウンロードの失敗をカバーします。

重要なポイント

  • Apache Airflowは、PythonのDAGとして定義されたデータワークフローを作成、スケジュール、監視する。
  • 組み込みのretry、backfill、監視UIを備え、taskを依存順に実行する。
  • Airflowはpipelineをオーケストレーションし、CI/CDはそれらを定義するDAGコードを配信してテストする。

関連ガイド