Apache Airflow的术语和组件

首先

我打算整理使用Apache Airflow时可能变得重要的项目,这是为了达到目的。

Apache Airflow是什么?

Airflow 是一种工作流管理工具。
使用Python来定义工作流,因此具有以下几点便利之处:

    • メンテナンス性

 

    • バージョン管理

 

    • テスト可能性

 

    複数人での作業

在Apache Airflow中可以做的事情。

作为常见的用例,以下几个方面可以考虑:

    • 機械学習パイプライン

 

    定期的な集計等で何度も繰り返す処理

用例 | Apache Airflow

不行或不适合的事情

因为无法对每个任务进行数据共享,所以无法像 Apache Spark™ 这样使用数据流。

使用的表达方式

在这里,我会解释一些基本术语。

DAG (有向无环图)

使用有向非循环图(DAG)来构建Airflow的基础。
通过DAG来组织任务及其依赖关系。

undefined

DAG运行

在中国,只需要一个选项进行同义转述:

DAG类似于一个类,当执行时,会创建DAG Runs作为实例。
如果多个DAG被执行,每个实例的execution_date会有所不同。

工作

任务被表示为DAG的节点。
每个节点代表着一个处理单元。共有两种类型。

    • Operator

定義ずみの処理を行う
PythonOperator や BashOperator がある

Sensor

they can pause the execution of dependent tasks until some criterion has been met
プロセスや状態の確認はこっち

任务生命周期

image.png

XComs

跨通信是指在任务之间交换消息的机制。
它由键、值和时间戳组成,可以存储所有可序列化的对象。

架构 (jià

1*czjWSmrjiRY1goA0emv7IA.png

组件

元数据数据库

任务状态相关的信息被保存下来。
数据库的更新是通过使用SQLAlchemy进行实现的。

日程安排者

调度器监视所有任务和DAG,并触发已完成所有依赖任务的任务。
每个DAG Runs都是根据schedule_interval进行调度的。有关参数的详细信息,请参见此处。
重要的是,如果将schedule_interval设置为None,则不会进行调度。在这种情况下,可以使用External Triggers从命令行界面(CLI)或Web界面启动。

执行者

这是一个消息队列处理过程,用于确定执行预定任务的工作人员。
有以下不同类型的执行者。

    • SequentialExecutor

Schedulerと同じマシン上でタスクを直列処理する

LocalExecutor

Schedulerと同じマシン上でタスクを並列処理する

CeleryExecutor

Workerのクラスタにタスクを分散して並列処理する

工人

实际执行任务逻辑的进程。由执行器决定。

网络用户界面

正如上述所述,除了执行任务的过程之外,Airflow 还具有一个特点,即存在 Web UI。通过这个特点,我们可以从浏览器中查看任务在 Metadata DB 中的状态,并且还可以编辑 Scheduler 的行为。

    • Webserver

Flaskで作られており、全タスクの状態を Metadata DB から読み出し、Web UIに表示する

Execution Logs

Workerプロセスの実行ログ。ディスクかリモートのどちらかに保存可能。Web UIで確認できる

请注意。

触发 (chù fā)

    • 最初 DAG Run は DAG の引数である、 start_date をもとに作成される.

 

    その後は schedule_interval をもとに順番に作成されていく.

因此,即使在Airflow – 任务注册时指定了过去的日期作为开始日期,也会发生阻止过去日期的作业执行的情况。

start_date が未来のまま、external trigger で実行したい場合

airflow.cfg 内でallow_trigger_in_future = True に設定する必要がある
ただし、この設定は schedule_interval が設定されていない場合のみ有効
これらの条件が満たされない場合には、start_date が未来になったタイミングで実行されるはず

调度和触发器 — Airflow 文档

请参照以下说明。

Apache Airflow的基本概念入门- Dustin Stansbury – Medium
Airflow文档中的概念

广告
将在 10 秒后关闭
bannerAds