news 2026/8/31 7:55:05

Apache Airflow 3:用代码搭建数据工作流调度的完整指南,5分钟跑通第一个DAG

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache Airflow 3:用代码搭建数据工作流调度的完整指南,5分钟跑通第一个DAG

Apache Airflow 3:用代码搭建数据工作流调度的完整指南,5分钟跑通第一个DAG

【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow

每天早上9点,你要挨个跑十几个数据任务,手动等上一个跑完再启动下一个;一个失败,整天白干还查不到断点在哪。Apache Airflow 就是为这种调度混乱准备的——一个用 Python 代码定义、自动调度并监控工作流(DAG)的平台,适合被数据管道和定时任务折磨的数据工程师与运维同学。

它解决了什么问题

Airflow 的定位很简单:工作流即代码。你用 Python 把流程写出来,交给它之后,调度、重试、监控全部自动完成。核心是 3 个能力:

  • 代码化管道:工作流版本化、可测试、可评审,彻底告别散落在各台机器上的 crontab。
  • 自动调度与重试:按你定的时间表触发;任务失败按retries配置自动重跑,不用人盯。
  • 可视化监控:Web UI 里每个任务的状态、日志、依赖关系一目了然,出问题 1 分钟定位。
  • 丰富的生态扩展:官方 Provider 生态覆盖 Postgres、S3、Snowflake、GCP 等近百种服务,装个包就能接。

Airflow 3 架构:调度器、DAG 处理器、API 服务、触发器等组件各司其职

核心概念速览

理解 3 个词,你就读懂了 Airflow 80% 的文档:

  • DAG(有向无环图):你工作流的"地图",一张 Python 文件,声明哪些任务要跑、谁依赖谁、什么时候跑。
  • Task(任务/Operator):地图上的"工序单",是最小执行单元,比如跑一段 SQL、执行一条 shell 命令。
  • Scheduler(调度器):车间主任,盯着地图和时间表,到点派工、失败重派,24 小时不下班。

上手实战:跑通第一个例子

环境准备与安装命令

只需 Python 3.10+ 环境(官方同时支持 3.10~3.14),两条命令装好:

# 指定 Airflow 的数据目录(默认 ~/airflow 也可省略) export AIRFLOW_HOME=~/airflow # 安装 Airflow 3 稳定版 pip install apache-airflow==3.3.0

启动 standalone 模式

# 一条命令初始化数据库、建用户、拉起全部组件 airflow standalone

然后写你的第一个 DAG,放到$AIRFLOW_HOME/dags/目录下即可,建议从仓库自带的 示例 DAG 抄起:

from airflow import DAG, task # TaskFlow API,最 Pythonic 的写法 from datetime import datetime @task def collect(): """收集用户行为数据""" print("正在拉取点击、浏览、购买数据...") @task def feature(): """特征工程""" print("生成用户画像与商品特征...") @task def train(): """训练推荐模型""" print("协同过滤模型训练完成,准确率达标,准备上线!") with DAG( dag_id="recommendation_pipeline", start_date=datetime(2024, 1, 1), schedule="@daily", # 每天自动跑一次 ) as dag: collect() >> feature() >> train() # >> 定义任务依赖顺序

保存后回到浏览器访问 http://localhost:8080,DAG 列表里就能看到recommendation_pipeline,点进 Graph 视图,依赖关系和执行状态直接呈现出来🚀

Graph 视图:直观展示任务间依赖关系与实时执行状态

进阶玩法

动态任务生成:分区数量不定也不怕

上游表今天 8 个分区、明天 32 个分区?用 Task Mapping(任务映射)就能按数据动态生成任务:把列表参数传给@task,Airflow 会自动为每个元素派生一个并行任务实例,不用改 DAG 结构。

Backfill:历史数据一条命令补齐

管道逻辑修好后想重跑历史数据?UI 里点 Backfill,或者直接用命令行指定日期范围:

# 对指定 DAG 回填 2015-01-01 到 2015-01-02 的历史数据 airflow backfill create --dag-id recommendation_pipeline \ --from-date 2015-01-01 --to-date 2015-01-02

Backfill 界面:为指定 DAG 选择日期范围批量回填

规模化与运维

从单兵作战到生产集群,有 2 条现成路线:

  • 单机/容器airflow standalone适合开发;稍上规模就用官方 Docker 镜像(apache/airflow)+ Compose 或 Swarm,镜像配方见 docker-stack 文档。
  • Kubernetes 集群:用官方 Helm Chart 一条命令拉起,生产环境可多实例部署 scheduler 避免单点故障,参考 chart 部署文档:
helm repo add apache-airflow https://airflow.apache.org helm install airflow apache-airflow/airflow

分布式架构:组件分离部署,支持多团队共享同一套元数据库

避坑指南

  • 3.x 的 Web UI 密码不在终端打印airflow standalone启动后,去$AIRFLOW_HOME/simple_auth_manager_passwords.json.generated里取自动生成的管理员密码。
  • SQLite 别进生产:本地开发够用,生产环境请换 PostgreSQL 或 MySQL(官方明确建议)。
  • pip 装出依赖冲突:Airflow 官方提供"已知可用"的 constraints 文件,安装时按你的 Airflow 与 Python 版本搭配使用,可复现性拉满。
  • DAG 文件别干重活:它只负责声明结构、会被反复解析求值,数据加工请写进任务内部,保持文件轻量。

现在就去搭起你的第一条管道

Airflow 把"谁来盯、失败了怎么办、上次跑到哪"这些琐事全部收编进代码和界面,你只需要专注业务逻辑本身。现在就去跑airflow standalone,把第一个 DAG 挂上去吧💪

更多细节请查阅 Airflow 官方文档 与 tutorial 系列教程,开启你的数据工作流自动化之旅。

【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 7:55:03

从零到生产:LibreChat 自托管部署避坑指南

从零到生产:LibreChat 自托管部署避坑指南 【免费下载链接】LibreChat Enhanced ChatGPT Clone: Features Agents, MCP, Skills, DeepSeek, Anthropic, AWS, OpenAI, Responses API, Azure, Groq, o1, GPT-5, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, A…

作者头像 李华
网站建设 2026/8/31 7:52:47

MATLAB连杆机构运动学仿真:从曲柄滑块到多杆机构GIF动画

用 MATLAB 做机械连杆机构运动学仿真,最吸引人的部分不是画出一条曲线,而是把四杆、五杆、六杆、曲柄滑块、曲柄连杆这类机构变成屏幕上连续运动的动画,并导出 GIF 动图,直接放进报告、论文或演示文档里。很多刚开始接触这个方向的…

作者头像 李华
网站建设 2026/8/31 7:52:31

基于MATLAB的手写数字识别系统:BP神经网络与GUI界面实现全解析

简介:本资源是一套面向计算机及相关专业本科生的MATLAB手写数字识别毕业设计项目源码,融合传统图像处理与深度学习方法,完整实现MNIST数据集上的数字识别任务,并配备可交互GUI界面,适用于课程设计、期末大作业及毕业设…

作者头像 李华
网站建设 2026/8/31 7:52:06

用Claude Code打造AI员工:语音控制、屏幕接管与自动构建实战

Claude Code 是 Anthropic 官方推出的命令行 AI 编程助手,它把大模型能力直接放进了终端,让模型可以读取项目文件、执行命令、修改代码、处理 Git 操作。听上去它是一个“写代码工具”,但如果把 Claude Code 当作自动化工作的控制核心&#x…

作者头像 李华
网站建设 2026/8/31 7:51:31

用LLM为Emacs的EWW浏览器装上AI阅读助手

在 Emacs 里浏览网页,很多人第一反应是折腾半天还不如直接切到 Chrome。确实,EWW 这类内置浏览器能打开页面,但遇到广告密集、正文混乱的长文章,阅读体验几乎劝退。不过现在情况正在变化:LLM 的能力越来越容易通过 HTT…

作者头像 李华
网站建设 2026/8/31 7:51:17

4台Mac跑671B大模型:exo 分布式AI集群本地推理指南

4台Mac跑671B大模型:exo 分布式AI集群本地推理指南 【免费下载链接】exo Run frontier AI locally. 项目地址: https://gitcode.com/GitHub_Trending/exo8/exo exo 是一个本地大模型分布式推理框架:在多台 Apple Silicon 或 Linux 机器上各跑一条…

作者头像 李华