【アパッチエアフロー】

Apache Airflow とは?

最終更新:
💡 データの流れを空の交通管制のように管理する

Airbnbが開発したオープンソースのワークフロー管理ツール。データパイプラインの定義・スケジュール・監視をPythonコードで行える。

📌 このページのポイント
Airflow:タスクの依存関係を管理 抽出 変換 集計A 集計B 保存 AとBは並行可能 Web UI:実行状況・ログを確認 成功 実行中 待機 矢印は依存関係。通常は上流の成功を待つ
Pythonで定義した依存関係に従って実行します。分岐や失敗時の動作、リトライは設定によって変わります。
ひよこ ひよこ
Airflowってどういうときに使うの?
ペンギン先生 ペンギン先生
たとえば「毎朝5時にデータベースからデータを抽出して、加工して、分析用のテーブルに書き込む」みたいな定期的なデータ処理を自動化したいときに使うよ
ひよこ ひよこ
cronジョブじゃダメなの?
ペンギン先生 ペンギン先生
単純なジョブならcronでもいいけど、タスクAが終わったらタスクBを実行して、失敗したらリトライして...みたいな複雑な依存関係をcronだけで表すには、別途スクリプトなどの仕組みが必要なんだ。AirflowならDAGで依存関係を可視化できるよ
ひよこ ひよこ
おもしろい!DAGってよく聞くけど何?
ペンギン先生 ペンギン先生
有向非巡回グラフのことで、タスクの実行順序を一方向の矢印で表したものだよ。依存関係に循環がない形で定義するんだ。通常は前のタスクの成功を待って次へ進み、依存しないタスクは並行して実行できるよ。失敗や分岐時の動作は設定によって変わるんだ
ひよこ ひよこ
設定ファイルで書くの?
ペンギン先生 ペンギン先生
AirflowのユニークなところはPythonコードでDAGを定義するところだね。for文などでタスクを生成できるよ。ただし定義を読み込むときのPythonのif文と、実行時に処理先を選ぶ分岐タスクは区別しようね
ひよこ ひよこ
本番環境だと運用は大変?
ペンギン先生 ペンギン先生
自前で運用するとスケジューラやワーカーの管理が結構大変だね。運用の手間を減らす選択肢として、AWSのMWAAなどがあるよ。対応するAirflowのバージョンや設定範囲はサービスごとに確認しようね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Airflow」って出てきたら「データパイプラインをPythonで管理するスケジューラ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Airflow」 = 気流・空気の流れ
💬 Airflowは英語で「気流」という意味だよ。データ処理の流れを管理するツールとして覚えると分かりやすいね

参考資料

← 用語集にもどる