章节摘要:本章把 Apache Airflow 从口号拉回第一条可解析的 DAG。你先看到最小任务链如何声明依赖与默认参数,再对照 DAG、Task、Operator、DagRun 在界面和元数据里分别指什么,最后划清它适合批处理编排、不适合充当实时计算引擎或通用队列的边界。读完应能解释:调度器吃的是蓝图,执行器才真正跑代码。
阅读完本章,你应当能够:
default_args 的最小 DAG,并说明它为何能被解析start_date 当开机键、把界面绿色当契约已履行的两类误判金句:Airflow 先认图,再认钟。图没声明的先后,钟再准也只是同时放两把火。

从“每天拉数、校验、入库”三步清单写出第一条 DAG:默认参数、依赖边、暂停与手动触发。不讲编年史,只讲怎样让解析器收下它。
把界面上的 DAG、运行、任务实例、算子、连接、变量,对照到元数据里真正被读写的对象,避免开会时各说各的。
对照 cron、队列、流计算、机器学习专用流水线:Airflow 擅长有向无环的批处理契约,不擅长毫秒级循环和任意长事务。
先有能解析的图,再统一用词,最后决定这张图该不该存在于 Airflow 里。顺序反了,会在错误的工具上雕花。
1.1 写出最小图 ──► 1.2 对齐名词 ──► 1.3 判断边界 │ └► 第2章把图写成可维护的生产 DAG
读 1.1 时不要平行打开架构图。把三步清单写成三个 task_id,用 >> 连上,确认解析器收下、手动触发一次、失败时下游停住。读 1.2 时对着同一次运行,把界面上的卡片、运行、任务行、日志 try 次数四个东西指认一遍,开会时就用这四个词,不再说“流程挂了”。读 1.3 时拿自己真正的一条作业来打分:有没有必须画出来的依赖、失败要不要按窗口重放、延迟能不能到分钟。三项里有一项是否,先别迁。
本章故意不讲 Scheduler 内部循环、不讲 Celery 心跳、不讲 RBAC。不是它们不重要,是你还没有一张能跑的图时,那些词只会变成名词收藏。工厂类比贯穿本章:图纸、工单、工位、工具。第 3 章会换成指挥与搬运,类比域会换,避免全书都在同一座车间里打转。
若你已经会写 DAG,仍建议把 1.1 的窗口语义读完。绝大多数“到点不跑”不是执行器坏了,是把 start_date 当成了开机键。这是后面所有章节共用的地雷,本章必须先拆掉。拆掉之后,后面的调度循环才听得懂。
把界面上的绿条当成“这张图永远正确”,是本章最想拆掉的习惯。绿条属于某一次 TaskInstance。同一张蓝图在补数窗口里可以红,在今晚窗口里可以绿。开会时必须带窗口说话。另一误判是把最小 DAG 写成单节点,认为“先跑起来再连边”。单节点没有表达因果,你验证的只是执行器能拉起进程,没有验证失败是否停下游。第三条误判:为了“像生产”,一上来配 Celery。第 1 章的生产感来自窗口语义和依赖边,不来自中间件。
读完三节,应能用车站话说清:时刻表是蓝图,某一班车是 DagRun,某一站是否正点是实例。工具是 Operator。还不会说这四句,不要翻到第 3 章去背 Scheduler。本章是通行证,不是目录装饰。
第 2 章会把最小链上的每一个字段拧紧:窗口、算子、边、映射。第 3 章才允许问这些对象在进程里如何走动。若有人在第 1 章结束后直接去配 KubernetesExecutor,拉回 1.3 的打分表。本章的产出是一张能失败得正确的图,以及一套开会不打架的词。有这两样,后面的章是加深;没有这两样,后面的章是名词瀑布。把 1.1 的失败演练当作全教程的入场券:没有亲手看过 upstream_failed,不要讨论 trigger_rule。
本章三节读完,应能把一条真实作业写成三节点图,并在失败时指出是哪一个实例红了。做不到就重做 1.1 的失败演练,不要用阅读进度代替动手进度。动手进度以 upstream_failed 被亲眼看见为准。看见了,术语才有附着点。没有附着点的术语,到第 3 章会全部滑掉。滑掉以后只能重读本章。重读比跳读便宜。
schedule、Operator、XCom、动态映射一次写清;第 3 章解释这条 DAG 在调度循环里如何变成 TaskInstance;第 4 章才谈把本机验证过的图搬到多机。