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できて循環がないことを確認します。
steps:
- run: pip install apache-airflow
- run: python -c "import dags.my_pipeline" # import check
- run: pytest tests/dags # task unit testsLatchkeyノート
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コードを配信してテストする。