数据岗位面试题更新 2026-08-05

请解释 Airflow 中 Task Instance 的概念,并说明它和 Task 之间的核心差异是什么?

数据技术原理Apache Airflow

考察说明

考查对 Airflow 核心抽象模型的理解,区分静态定义与动态运行实例。

回答思路

  1. 【回答框架 1】Task 是 DAG 中的静态定义节点,描述要执行的具体操作、依赖关系和参数配置,类似于一个类或蓝图;Task Instance 是 Task 在某个特定 DAG 运行(DAG Run)中的具体执行实例,类似于基于类创建的对象,拥有独立的运行状态和执行上下文。
  2. 【回答框架 2】每个 DAG Run 会为包含的每个 Task 创建对应的 Task Instance,并赋予唯一的 task instance key,由 DAG ID、Task ID 和执行日期共同确定。Task Instance 记录该次运行的尝试次数、开始/结束时间、当前状态(如 queued、running、success、failed、up_for_retry 等)以及执行日志等元数据,用于追踪和重试。
  3. 【回答框架 3】区别的核心在于:Task 是静态的配置,不携带运行状态,可被多个 DAG Run 复用;Task Instance 是动态的运行实体,绑定特定运行周期,每次 DAG 触发都会生成新实例,其状态会随执行过程变化。理解两者之分有助于正确设计 DAG 与排查调度问题。
  4. 【回答框架 4】在实际使用中,通过 context 传入的 ti 对象即可访问当前 Task Instance 的属性,如 ti.xcom_pull 获取 XCom 数据;而 Task 对象本身的参数如 retries、retry_delay 是定义执行策略,具体生效则体现在每个 Task Instance 的重试行为上。
  5. 【回答框架 5】可将概念映射到操作系统进程:Task 等同于可执行文件,Task Instance 等同于运行中的进程,多个进程可同时运行同一可执行文件,类似同一 Task 可在不同 DAG Run 中并发执行,但实例间互不干扰。
  6. 【关键点 1】Task 是静态定义,Task Instance 是 Task 在特定 DAG Run 中的一次具体执行。
  7. 【关键点 2】Task Instance 的唯一标识由 DAG ID、Task ID 和执行日期组成。
  8. 【关键点 3】Task Instance 携带独立的运行状态与元数据,支持重试与追踪。
  9. 【关键点 4】同一 Task 可在不同 DAG Run 中生成多个独立实例,互不影响。
  10. 【关键点 5】通过 context 可访问当前 Task Instance(ti)以进行 XCom 等操作。
  11. 【易错点 1】混淆 Task 和 Task Instance 可能导致误以为 Task 状态会持续保存或跨运行共享,实际上状态都绑定实例。
  12. 【易错点 2】忽略 DAG Run 对实例的绑定关系,在调试时定位不到具体运行时上下文。
  13. 【易错点 3】将 Task 参数当成运行时状态,误以为修改定义会影响已运行实例。