请描述在 Airflow 中配置任务并行执行的机制和关键参数。
考察说明
考察对 Airflow 调度并行执行原理及配置的掌握程度。
回答思路
- 【回答框架 1】Airflow 的并行执行依赖调度器 (Scheduler) 和多个执行器 (Executor)。核心机制是任务实例 (Task Instance) 被调度器放入队列,由执行器并发执行。默认顺序执行器 (SequentialExecutor) 串行;本地执行器 (LocalExecutor) 支持进程级并行;Celery 执行器 (CeleryExecutor) 支持跨节点分布式并行,Kubernetes 执行器 (KubernetesExecutor) 每任务启动独立 Pod。
- 【回答框架 2】控制并行度的关键参数包括:`parallelism` 为全局最大任务实例数,`dag_concurrency` 为每个 DAG 的最大运行任务数,`max_active_runs_per_dag` 控制每个 DAG 的活动运行数,`worker_concurrency` 控制 Celery worker 并发数,`max_active_tasks_per_dag` 可细化单 DAG 并行度。调优时需综合考虑任务依赖、资源容量和延迟要求。
- 【回答框架 3】任务级并行还受依赖关系约束,无依赖的任务可并行,有依赖的按 DAG 拓扑顺序执行。需使用 `ExternalTaskSensor` 或 `TriggerDagRunOperator` 处理跨 DAG 依赖。并行加速时注意任务设计要幂等,避免共享变量冲突,数据库连接池和 API 限流等资源瓶颈。
- 【回答框架 4】实际生产中建议先用顺序执行器验证 DAG 逻辑,再切换到 Local 或 Celery 执行器,并监控队列积压、执行器负载和任务失败率。配置变更后需重启调度器和 worker 才能生效。
- 【关键点 1】Airflow 并行执行由执行器类型和多个并发参数共同控制。
- 【关键点 2】`parallelism`、`dag_concurrency`、`max_active_runs_per_dag` 为最常用调优参数。
- 【关键点 3】任务依赖决定实际并行度,跨 DAG 依赖需特殊算子。
- 【关键点 4】需保证任务幂等和资源充足,否则并行会导致副作用和瓶颈。
- 【易错点 1】并行度设置过大可能导致资源耗尽任务排队,要根据资源上限和压测调整。
- 【易错点 2】修改配置后未重启 scheduler 和 worker,参数不生效。
- 【易错点 3】忽略任务依赖链,简单调大 `parallelism` 不会让有依赖的任务自发起并行执行。