airflow
Python 工作流编排平台,用代码定义数据管道 DAG,支持 100+ 云服务和数据库的自动化调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Python 工作流编排平台,用代码定义数据管道 DAG,支持 100+ 云服务和数据库的自动化调度
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
凌晨三点,某电商公司的数据工程师小林发现 ETL 管道又报了错。订单数据的汇总任务比预定时间晚了四十分钟,直接影响了早会的经营分析报表。她打开 Airflow 的 Web UI,点击几下鼠标,回放了失败节点的重跑,三分钟后整个链路自动补齐,报表恢复正常——而她全程不需要 SSH 到任何一台服务器,不需要手动执行任何一条 SQL,不需要写任何一行脚本。
这不是科幻场景,而是全球数万家企业在生产环境中每天都在发生的事。Apache Airflow 已经成为数据工程师最重要的日常工作平台之一,用代码化的方式把复杂的跨系统数据流,变成一张张清晰可见的 DAG(有向无环图)。
图1:Apache Airflow GitHub 仓库
Apache Airflow 诞生于 Airbnb,由 Airbnb 数据基础设施团队于 2014 年内部开发,最初代号「Airbnb Airflow」。当时的背景是:Airbnb 的数据管道越来越复杂,数据工程师们靠一堆散落在各处的脚本和定时 cron 任务来维持数据流动,日志不统一、重跑靠手工、一旦出错就是连环故障。
团队决定做一款「能把所有数据管道可视化、并且能用代码描述工作流」的平台。这个想法奠定了 Airflow 区别于传统 ETL 工具的核心哲学:「工作流即代码」(Workflow as Code)。2015 年 Airbnb 将其开源,2016 年加入 Apache 孵化器,2019 年毕业成为 Apache 顶级项目,结束了数据编排领域长期没有统一标准的局面。
发展至今,Airflow 已支持 100+ 官方 Provider,覆盖 AWS、GCP、Azure、阿里云、Slack、MySQL、PostgreSQL、Kubernetes 等几乎所有主流数据生态组件,全球下载量超过 1.5 亿次,是 Apache 基金会下最活跃的项目之一。
如果用一句话概括 Airflow,那就是:用 Python 代码定义任务依赖关系,Airflow 自动帮你按正确顺序执行、监控、重跑这些任务。
DAG(Directed Acyclic Graph,有向无环图)是 Airflow 的核心抽象。你可以把它理解为一张「任务流程图」——节点是具体的任务(比如「读取数据」「执行 Python 脚本」「发钉钉通知」),边是任务之间的依赖关系。Airflow 保证:只有当上游任务成功完成后,下游任务才会启动。
举一个典型的数据管道场景:每天凌晨从 MySQL 抽取昨日订单数据 → 清洗去重 → 计算 GMV 和各品类转化率 → 生成报表 → 发送邮件通知管理层。这条链路用 Airflow 的 DAG 来写,就是十几行 Python 代码:
with DAG('daily_sales_report', schedule='0 6 * * *') as dag:
extract = MySqlOperator(task_id='extract_orders', sql='SELECT ...')
clean = PythonOperator(task_id='clean_data', python_callable=clean_orders)
aggregate = PythonOperator(task_id='aggregate', python_callable=compute_metrics)
report = EmailOperator(task_id='send_report', to=['manager@company.com'])
extract >> clean >> aggregate >> report
这就是 Airflow 最核心的价值:把复杂的跨系统协同,变成可维护、可版本控制、可协作开发的代码。
Airflow 提供了三类可组合的组件,让开发者不需要从零实现常见功能:
BashOperator(执行 Shell 命令)、PythonOperator(执行 Python 函数)、MySqlOperator、S3ToRedshiftOperator、KubernetesPodOperator 等。目前官方支持的 Operator 超过 100 种,涵盖各类数据库、云服务、API 调用场景。HttpSensor 等待某个 API 返回特定状态、ExternalTaskSensor 等待另一个 DAG 的某个任务完成、S3KeySensor 等待某个 S3 文件出现。这种分层设计让 Airflow 非常容易扩展——你想接入一个新的系统,只需要实现对应的 Hook + Operator,就可以在 DAG 里像调用内置功能一样使用它。
Apache Airflow 提供了多种部署方式,从极简到生产级,用户可以根据场景选择。
对于新用户,官方推荐用 Docker Compose 快速起一个体验环境。整个过程只需要三步:克隆代码仓库、执行 docker compose up,访问 http://localhost:8080 就能看到完整的 Web UI。虽然项目根目录没有 docker-compose.yml,但官方文档提供了标准配置模板,可以直接下载使用。
Airflow 的 Dockerfile 是目前见过的最精致的生产镜像之一。它采用多阶段构建(multi-stage build)策略:第一个镜像(airflow-build-image)包含完整的编译工具链和所有依赖,用于安装和构建;第二个镜像(main)只包含最终运行所需的内容,将编译产物和虚拟环境直接复制过来。这样生产镜像体积大幅缩小(通常只有 500MB 左右),同时不会暴露编译工具链的安全风险。
对于需要高可用的生产环境,Airflow 提供了完整的 Helm Chart,可一键部署到 Kubernetes 集群。Helm Chart 支持自定义 Executor 类型(LocalExecutor、CeleryExecutor、KubernetesExecutor)、PostgreSQL 和 Redis 配置、资源配额、持久化日志存储、Ingress 等,几乎涵盖了所有生产级需求。这使得 Airflow 成为企业数据平台的标准选型。
Airflow 自带功能完善的 Web UI,不需要额外安装任何组件。工程师写的每一行 DAG 代码,在 UI 上都呈现为可视化的流程图;每个任务的执行状态(成功/失败/运行中)、执行耗时、日志内容,在 UI 上都可以直接查看;还可以手动触发 DAG 执行、清空失败任务、回填历史日期的数据——这让运维操作变得非常直观,不需要 SSH 到服务器去翻日志文件。
Airflow 的任务执行由 Executor 驱动,Executor 的选择直接决定了系统的并发能力和架构复杂度。
| Executor 类型 | 适用场景 | 并发能力 |
|---|---|---|
| SequentialExecutor | 本地测试,最简单的单进程执行 | 1 |
| LocalExecutor | 中小规模,单机多进程 | 可配置(通常 4-16) |
| CeleryExecutor | 中大规模,需要队列 + 多 Worker | 数百 |
| KubernetesExecutor | 生产级,任务级隔离,动态扩缩容 | 数千 |
CeleryExecutor 和 KubernetesExecutor 是生产环境最常用的两种模式。CeleryExecutor 需要搭配 Redis 或 RabbitMQ 作为消息队列,Worker 节点长期运行,适合任务量可预测的场景。KubernetesExecutor 则是「任务即 Pod」模式,每个任务启动一个新的 Kubernetes Pod 执行,执行完即销毁,资源利用率更高,适合任务量波动大的场景。
优势:
局限:
Apache Airflow 不仅仅是一个调度工具,它代表了一种理念:数据管道应该像软件一样被对待——可版本控制、可测试、可协作、可自动化部署。 在它之前,数据工程师通常靠一堆散乱的脚本和定时任务来管理数据流;在它之后,行业有了统一的标准和工具。
这种理念深刻影响了后续的数据工具生态:Prefect、Dagster、Metaflow 等新一代工作流框架,都在不同程度上受到了 Airflow 的启发。而 Airflow 本身也在持续演进——Helm Chart 的完善、KubernetesExecutor 的成熟、Provider 生态的不断壮大——让它在数据工程领域长期保持着不可替代的地位。
对于数据团队来说,学习 Airflow 不仅意味着掌握一个工具,更意味着理解现代数据工程的核心方法论。
本报告基于 GitHub 仓库数据自动生成,分析时间:2026-05-24。