Apache Airflow的术语和组件
首先
我打算整理使用Apache Airflow时可能变得重要的项目,这是为了达到目的。
Apache Airflow是什么?
Airflow 是一种工作流管理工具。
使用Python来定义工作流,因此具有以下几点便利之处:
-
- メンテナンス性
-
- バージョン管理
-
- テスト可能性
- 複数人での作業
在Apache Airflow中可以做的事情。
作为常见的用例,以下几个方面可以考虑:
-
- 機械学習パイプライン
- 定期的な集計等で何度も繰り返す処理
用例 | Apache Airflow
不行或不适合的事情
因为无法对每个任务进行数据共享,所以无法像 Apache Spark™ 这样使用数据流。
使用的表达方式
在这里,我会解释一些基本术语。
DAG (有向无环图)
使用有向非循环图(DAG)来构建Airflow的基础。
通过DAG来组织任务及其依赖关系。
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
プロセスや状態の確認はこっち
任务生命周期
XComs
跨通信是指在任务之间交换消息的机制。
它由键、值和时间戳组成,可以存储所有可序列化的对象。
架构 (jià
组件
元数据数据库
任务状态相关的信息被保存下来。
数据库的更新是通过使用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文档中的概念