Apache Airflow 完整指南:5 步跑通你的第一个定时数据管道
【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow
Apache Airflow 是一个开源的工作流调度平台,用 Python 代码定义数据管道,按时间或事件触发自动执行任务,并通过 Web 界面全程监控。它把"今天该跑什么、失败了怎么办"从人的记忆里移交给系统,让重复性任务在无人值守的情况下稳定交付。
定位与适用场景:哪些工作流交给 Airflow
Airflow 擅长的是结构化、周期性、有明确依赖的工作负载:
- 每日/每小时的批处理数据管道(抽取、清洗、加载、报表)
- 机器学习流程的编排(训练、评估、部署各步骤的先后协调)
- 跨系统任务编排:ETL、备份、同步、通知之间的时序控制
它的适用边界也很清楚:Airflow 不是流式计算引擎,不适合毫秒级低延迟的实时流处理;重数据处理应该交给 Spark 等外部引擎,Airflow 负责调度与协调,而非搬运大块数据。
五分钟快速上手:standalone 模式五步启动
Airflow 3.x 提供了airflow standalone命令,一条命令初始化数据库、创建管理员、启动全部组件。最短路径如下(详细步骤见 airflow-core/docs/start.rst):
- 准备 Python 3.10+ 环境(3.2 起支持至 3.14)
- 创建虚拟环境并设置
AIRFLOW_HOME(存放配置、日志与 DAG 的根目录) - 用
pip安装apache-airflow(官方建议附加 constraints 约束文件,保证依赖组合可复现) - 执行
airflow standalone - 浏览器打开
localhost:8080登录 Web 界面
python3 -m venv airflow_venv && source airflow_venv/bin/activate export AIRFLOW_HOME=~/airflow pip install "apache-airflow[celery]==3.1.0" airflow version # 验证安装 airflow standalone # 一键启动数据库迁移、API 与调度器登录密码在 3.x 中不一定会打印在终端,官方将其写入$AIRFLOW_HOME/simple_auth_manager_passwords.json.generated,用cat查看即可。
核心概念:DAG、任务与补数据(Backfill)
理解三个概念就够上手了,源码结构可参考 airflow-core/src/airflow/。
DAG(有向无环图):一个 DAG 就是一份工作流定义,写在一个 Python 文件里,声明有哪些任务、谁先谁后、何时触发。"有向无环"意味着依赖只能单向前进、不能循环。
任务(Task):DAG 中的最小执行单元。每个任务由一个 Operator(算子,即"执行某类操作的封装")或@task装饰的 Python 函数承载,失败可自动重试。
补数据(Backfill):对已定义的工作流按日期区间批量补跑历史实例。某天调度漏跑或口径变更后需要重算历史,用airflow backfill create即可,不必手工逐天触发。
真实用例:每日数据管道的完整闭环
场景:每天凌晨 02:00 拉取昨日订单,清洗后写入分析库,并通知值班同学。
触发:DAG 使用 cron 表达式0 2 * * *声明触发时间,DAG 文件放入$AIRFLOW_HOME/dags后被自动拾取注册。
执行:拉取、清洗、入库三个任务按>>声明的依赖顺序执行;任一步失败,Airflow 按任务的重试配置(次数与间隔)自动重跑,不会阻塞下游。
监控:在 Web 界面的 DAGs 页面可以看到每次运行(DAG Run)的整体状态与每个任务节点的颜色标记,点开单个任务即可看日志与耗时。
闭环:若某天漏跑,用airflow backfill create --dag-id <id> --from-date ... --to-date ...补齐;运行结果沉淀在元数据库中,形成可审计的执行历史。
进阶能力:生产环境常用的五个手段
- 约束文件复现安装:
pip install时附加--constraint指向对应版本的约束文件,避免依赖漂移导致的不可复现环境 - 补数据与手动触发:
airflow tasks test单跑一个任务做调试,airflow backfill create批量补跑日期区间 - 触发器(Triggerer):3.x 中外部触发(如资产就绪、跨 DAG 依赖)由 Triggerer 组件承担,DAG 文件无需常驻轮询
- Provider 生态:数据库、云厂商、消息通知等连接器以独立 provider 包发布,按需安装,见 providers/ 目录
- 容器化部署:单机用 Docker Compose,集群用官方 Helm Chart(含调度器、Worker、Triggerer 等组件拆分),见 chart/ 目录
FAQ:新手最常卡住的四个问题
问:启动后找不到管理员密码?3.x 的airflow standalone不一定把密码打印到终端,密码自动生成在$AIRFLOW_HOME/simple_auth_manager_passwords.json.generated,直接读取该文件。
问:写好的 DAG 文件为什么在 UI 里看不到?确认文件位于$AIRFLOW_HOME/dags目录下且语法无误;DAG 由 dag-processor 组件周期解析,刚保存的文件需要等一个扫描周期(默认较短)才会出现。
问:standalone 能直接用于生产吗?不能。standalone 把所有组件装进一个进程,只适合开发验证。生产环境应按 airflow-core/docs/administration-and-deployment/ 的指引拆分组件,或采用 Docker Compose / Kubernetes 部署。
问:pip install apache-airflow装完报依赖冲突?这是已知情况,官方文档明确建议通过对应版本与 Python 版本的 constraints 文件锁定依赖组合,安装指引见 airflow-core/docs/start.rst。
结语与下一步
Airflow 的价值在于把"流程"从口头约定变成可版本化、可重试、可追溯的代码资产。建议的下一步:按本文五步在本机跑起 standalone 实例,把一段现有的 cron 脚本改写成第一个 DAG 并用 backfill 补跑一天,体会调度器接管重复劳动之后的差别。更完整的教程与参考文档在 airflow-core/docs/ 目录,从tutorial/系列读起即可系统深入。
【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考