■ はじめに
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