Airflow Knowledge Graph#
本文档把所有 Airflow 的知识点汇总在一起, 不对知识内容做详细解释, 只是梳理一遍知识点和这些知识点的作用, 以及列出相关文档. 以便查阅.
调度相关#
简单的单步任务:
- 简单的两步任务, 串行:
- 简单的两步任务, 并行:
使用第三方 Python 包: 如果你有很多任务会需要不同的第三方包, 你很难找到一个通用的依赖配置, 如何让不同的 task 有不同的依赖层?
在相邻的两个 Task 之间传递数据:
- 在任意的两个 Task 之间传递小数据: 任意的意思是它们可能不相邻
在任意的两个 Task 之间传递大数据: 任意的意思是它们可能不相邻
- Poll for Job Status 模式: 远程异步调用位于 Airflow 之外的任务, 并查询任务状态, 直到任务完成或失败
Core Concepts - Sensors: 解决这一问题的核心概念 sensor 的介绍.
Using the TaskFlow API with Sensor operators: 官方使用 sensor 的 示例代码
- Failure tolerance in parallel tasks: 在多个并行任务的下一步都指向同一个任务时, 这一批并行任务到底允不允许部分失败? 能允许多少?
Trigger Rules: 定义失败容忍规则的官方文档.
- 单个任务失败重试: 任务失败后, 重试多少次? 重试间隔是多少? 要不要以 exponential backoff 的方式等待? 相关文档:
- Timeout: 对单个 task 或者整个 dag 设定 timeout
Task Timeout: 请看
execution_timeout
这一参数.Dag Timeout: 请看
dagrun_timeout
这一参数.
- 条件分叉执行: 一个任务之后接着多条链路, 根据这个任务的结果判断我们选择哪条链路执行. 相关文档:
Branching: 介绍 branching 概念的官方文档
BranchPythonOperator: 实现 branching 的 operator 的 API 文档
- 断路器: 一个任务执行完之后, 根据结果选择是否要提前结束整个链路.
-Short circuit Operator: 对断路器模式的介绍. - ShortCircuitOperator: 实现断路器的 operator 的 API 文档.
开发技巧相关#
老式的 context manager + operator 的写法:
- 新式的 task flow decorator 的写法:
- 用 UI 运行的 Dag 时使用 fancy 的表单界面来决定输入的 parameters:
- 给你的 Airflow 环境添加 Variables 并在 task 中访问这些 Variables:
- 在多个 Task 之间分享 dataset 数据, 从而避免每个 task 都要 IO:
- 用 Code 来生成 Dag 以及里面的逻辑而不是手写函数定义 dag:
- 动态的创建多个 Task: 常用语根据输入的参数, 启用 N 个 (N 是变量) parallel task 的情况.
安全相关#
如何在 Airflow 中保存敏感数据, 例如数据库连接信息: