【Airflow】Apache Airflow ~ 基礎知識編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/07/18/004531
https://dk521123.hatenablog.com/entry/2021/07/24/233012
https://dk521123.hatenablog.com/entry/2021/07/28/234319

で、Airflowを予習していたのだが、すっかり忘れてしまった。

とりあえず、リハビリも兼ねて、関連する用語などが整理する。

目次

【1】Apache Airflow
【2】DAG(Directed acyclic graph)
【3】Task / Task Instance (タスク/タスクインスタンス)
【4】Operator(オペレータ)
【5】Sensor(センサ)
【6】Hook(フック)
【7】XComs

【1】Apache Airflow

* Airbnb社製のワークフローエンジン
* Python製
* Web UIによるモニタリング、プラグイン拡張、処理分散が可能

参考文献
https://dev.classmethod.jp/articles/airflow-getting-started/

補足:MWAA(Amazon Managed Workflow for Apache Airflow)

* 長くなったので、以下の関連記事に転記。

https://dk521123.hatenablog.com/entry/2021/09/29/131101

【2】DAG(Directed acyclic graph)

* DAG の 読み方は ダグ(?)
* Directed acyclic graph = 有向非巡回グラフ
 cf. cyclic=循環, 巡回
  acyclic (ay-si-kluhk エイスイクリク) = 非循環, 非巡回)
=> 有向  : ある頂点からある頂点の方向が決まっている
=> 非巡回:同じ辺を通らない

※ Apache Airflow 特有な用語ではない。
(以下の関連記事で、AWS Glueでも前に扱っていた)

https://dk521123.hatenablog.com/entry/2019/10/10/223018

個人的な理解

* ある処理群を纏めた単位
 => 以降で出てくる"タスク"の集合体って理解でいい
 => Glueで言うと、Workflow
 => 『[処理1]=>[処理2]=>[処理3]』があったとすると、
  処理1~3までを、DAGという感じ
 => 以下の公式サイトの図も参照。

https://airflow.apache.org/docs/apache-airflow/stable/concepts/dags.html

* 非循環, 非巡回なので、処理の戻りがない

【非循環】
[処理1]=>[処理2]=>[処理3]

【 NOT 非循環】
 [処理1]=>[処理2]=>[処理3]=+
     ↑                    |
     +====================+

【3】Task / Task Instance (タスク/タスクインスタンス)

Task(タスク)

* DAG内の作業単位
 => 上記「【2】DAG(Directed acyclic graph)」の例でいうと
  「処理1」が1タスクになる
 => Airflow では、1つ1つのタスクをPythonで記述

Task Instance (タスクインスタンス)

* Airflowを実行したら、タスクに対して「タスクインスタンス」ができる
 => Airflow の Web UI で、そのインスタンスに対する
  状態(ステータス。「実行中」「成功」など)の確認が可能

【4】Operator(オペレータ)

* DAG内 の 単一処理(Task)を定義するクラス
 => この オペレーターを DAG で関連づけてETL処理を定義する
 => PythonOperator や BashOperator などがあり、カスタムも可能。
 => 詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2021/07/28/234319

【5】Sensor(センサ)

* Operatorの一部
* 指定時間、ファイル等を取得できるまで
 待つ(ポーリング polling)ためのクラス

Apache Airflow ~ Sensor ~
https://dk521123.hatenablog.com/entry/2023/10/30/002751

【6】Hook(フック)

* DB、Hive などの外部リソースとのやり取りをするプログラム

https://airflow.apache.org/docs/apache-airflow/stable/concepts/connections.html#hooks

【7】XComs

* XComs = cross-communication (交差通信?)
* 異なるTask間でデータをやり取りするための手段

Apache Airflow ~ XComs ~
https://dk521123.hatenablog.com/entry/2023/10/31/000133

関連記事

Apache Airflow ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/07/18/004531
Apache Airflow ~ 環境構築 / Docker 編 ~
https://dk521123.hatenablog.com/entry/2021/10/11/134840
Apache Airflow ~ 環境構築 / Kubernetes 編 ~
https://dk521123.hatenablog.com/entry/2023/05/13/000000
Apache Airflow ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/07/24/233012
Apache Airflow ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/07/28/234319
Apache Airflow ~ DAGの引数 ~
https://dk521123.hatenablog.com/entry/2022/01/13/101634
Apache Airflow ~ Sensor ~
https://dk521123.hatenablog.com/entry/2023/10/30/002751
Apache Airflow ~ XComs ~
https://dk521123.hatenablog.com/entry/2023/10/31/000133
Apache Airflow ~ 実行タイミング ~
https://dk521123.hatenablog.com/entry/2022/01/15/014005
Apache Airflow ~ CLI
https://dk521123.hatenablog.com/entry/2021/10/21/130702
Apache Airflow ~ リトライ ~
https://dk521123.hatenablog.com/entry/2021/10/10/000000
Apache Airflow ~ タイムアウト
https://dk521123.hatenablog.com/entry/2021/10/12/000000
Apache Airflow ~ 同時実行 / 並列関連 ~
https://dk521123.hatenablog.com/entry/2021/10/19/144148
Apache Airflow ~ Variable ~
https://dk521123.hatenablog.com/entry/2023/12/17/000000
Apache Airflow ~ Connection ~
https://dk521123.hatenablog.com/entry/2021/10/16/000454
Apache Airflow ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/09/30/163020
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323
Apache Airflow ~ 通知サンプル編 ~
https://dk521123.hatenablog.com/entry/2021/10/09/000000
MWAA ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/09/29/131101
MWAA ~ Variable ~
https://dk521123.hatenablog.com/entry/2023/12/28/002530
Terraform ~ AWS MWAA ~
https://dk521123.hatenablog.com/entry/2023/12/25/000152
MWAA Local ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/10/21/233404