数据中台工作流编排引擎:Apache Airflow

一、Apache Airflow 是什么?

Apache Airflow is an open-source platform to programmatically author, schedule, and monitor workflows.

------ Apache Airflow 官网

  • 起源:由 Airbnb 于 2014 年开发,2016 年开源,2019 年成为 Apache 顶级项目。
  • 定位工作流编排引擎 (Workflow Orchestration),用于调度和监控有向无环图(DAG)形式的任务依赖。
  • 核心理念代码即配置(Code as Configuration)------ 所有工作流用 Python 编写,版本可控、可测试、可复用。

关键验证

  • GitHub Stars: 33k+(截至 2025 年,数据工程领域最高之一)
  • Apache 状态:Top-Level Project(活跃度高,月均数百次 commits)
  • 生产采用:Google Cloud Composer、AWS MWAA、Microsoft Azure Data Factory 均基于或兼容 Airflow
  • Stack Overflow 2024 调查:62% 的数据工程师使用 Airflow

二、核心能力

1. DAG 驱动的工作流编排

  • 每个工作流是一个 DAG (Directed Acyclic Graph),由多个 Task 组成。
  • 支持复杂依赖:task_a >> task_b 表示 a 成功后执行 b。
  • 内置多种 Operator (任务类型):
    • BashOperator:执行 shell 命令
    • PythonOperator:调用 Python 函数
    • PostgresOperator / MySqlOperator:执行 SQL
    • EmailOperator:发送邮件
    • KubernetesPodOperator:在 K8s 中运行容器

📌 验证:Airflow Concepts - DAGs

2. 强大的调度与重试机制

  • 支持 cron 表达式或 timedelta 调度(如 @daily, */5 * * * *
  • 自动处理 任务失败重试(可配置次数、间隔)
  • 支持 回填(Backfill):补跑历史数据
  • 任务超时控制:避免僵尸任务占用资源

3. 可视化监控与告警

  • Web UI 实时展示 DAG 状态、任务日志、依赖关系
  • 支持 SLA 监控:任务超时自动标记
  • 集成告警渠道:Email、Slack、钉钉、PagerDuty(通过 Callbacks)

4. 可扩展架构

  • Executor 模式灵活切换
    • SequentialExecutor(单机调试)
    • LocalExecutor(多进程,适合中小规模)
    • CeleryExecutor / KubernetesExecutor(分布式,生产推荐)
  • 支持自定义 Operator、Hook、Sensor

5. 安全与权限

  • 基于角色的访问控制(RBAC)
  • 支持 LDAP/OAuth 集成
  • 敏感变量加密存储(通过 airflow variables + Fernet key)

三、不适合的场景(客观局限)

场景 原因
实时流处理 Airflow 是批调度引擎,非 Flink/Spark Streaming 替代品
高频任务(秒级触发) 最小调度粒度为分钟级,不适用于毫秒/秒级场景
无依赖的简单脚本 若仅需定时执行单脚本,cron 更轻量

📌 验证:Airflow 官方 FAQ 明确指出:"Airflow is not a streaming solution."


四、快速实践:5 步运行第一个 DAG

目标:每日从 PostgreSQL 提取 GMV 数据 → 生成日报 → 发送邮件

步骤 1:安装 Airflow(单机版)

bash 复制代码
# 推荐使用 pip(Python ≥ 3.8)
pip install apache-airflow==2.8.1 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt"

# 初始化数据库
airflow db init

# 创建管理员账号
airflow users create \
    --username admin \
    --firstname Admin \
    --lastname User \
    --role Admin \
    --email admin@example.com \
    --password admin

# 启动 Web Server 和 Scheduler
airflow webserver --port 8080
airflow scheduler

访问 http://localhost:8080,登录账号 admin/admin

步骤 2:配置数据库连接

  • 在 Web UI → Admin → Connections 添加 PostgreSQL 连接:
    • Conn Id: pg_ods
    • Conn Type: PostgreSQL
    • Host/Schema/Username/Password 按实际填写

步骤 3:编写 DAG 文件(dags/gmv_daily.py

python 复制代码
from datetime import datetime, timedelta
from airflow import DAG
from airflow.providers.postgres.operators.postgres import PostgresOperator
from airflow.operators.email import EmailOperator

default_args = {
    'owner': 'data_team',
    'retries': 2,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(
    'gmv_daily_report',
    default_args=default_args,
    description='Daily GMV Aggregation',
    schedule_interval='0 2 * * *',  # 每天凌晨2点
    start_date=datetime(2025, 1, 1),
    catchup=False,
)

extract_gmv = PostgresOperator(
    task_id='extract_gmv',
    postgres_conn_id='pg_ods',
    sql="""
        INSERT INTO ads.daily_gmv (dt, gmv)
        SELECT '{{ ds }}', SUM(amount)
        FROM dwd.fact_order
        WHERE dt = '{{ ds }}' AND status = 'paid';
    """,
    dag=dag,
)

send_report = EmailOperator(
    task_id='send_email',
    to='ops@example.com',
    subject='GMV Daily Report - {{ ds }}',
    html_content='GMV for {{ ds }} has been updated.',
    dag=dag,
)

extract_gmv >> send_report

步骤 4:放置 DAG 文件

  • gmv_daily.py 放入 Airflow 的 dags_folder(默认 ~/airflow/dags
  • Web UI 会自动加载(每 30 秒扫描一次)

步骤 5:触发与监控

  • 在 UI 中点击 Trigger DAG 手动运行
  • 查看 Graph ViewLogs 确认执行成功

五、生产部署建议

项目 推荐方案
Executor KubernetesExecutor(云原生)或 CeleryExecutor(自建集群)
元数据存储 PostgreSQL 或 MySQL(不要用 SQLite
日志存储 S3 / MinIO / HDFS(避免本地磁盘)
监控 Prometheus + Grafana(Airflow 内置 metrics)
CI/CD Git 管理 DAG,通过 CI 测试后部署

✅ 验证:Google Cloud Composer、AWS MWAA 均采用上述架构。


六、权威学习资源

类型 链接
官方文档 https://airflow.apache.org/docs/
GitHub https://github.com/apache/airflow
社区 https://airflow.apache.org/community/
示例 DAG 库 https://github.com/apache/airflow/tree/main/airflow/example_dags
视频教程 Astronomer.io(Airflow 核心贡献者运营)

✅ 结论

Apache Airflow 是构建轻量级数据中台"调度与开发层"的事实标准,尤其适合:

  • 需要可靠调度 SQL/Python 脚本的企业
  • 追求工作流可视化与可观测性的团队
  • 希望用代码管理 ETL 逻辑的工程化组织

但它不是数据处理引擎,应与 PostgreSQL(存储)、NiFi(接入)、FastAPI(服务)协同使用。


相关推荐
字节拾光录8 小时前
Java工具库三足鼎立:Hutool、Apache Commons、Guava深度测评与场景化选型指南
java·apache·guava
清平乐的技术专栏1 天前
Apache SeaTunnel的发展历程
apache
SelectDB1 天前
宇信科技基于 SelectDB & Apache Doris 构建实时智能的银行经营分析平台
数据库·apache
SelectDB1 天前
上海证券 SelectDB 升级实践:湖仓流批一体落地与 Elasticsearch 全面替换
数据库·apache
熊文豪2 天前
工业物联网时序数据库选型指南:Apache IoTDB 的技术优势与应用实践
物联网·apache·时序数据库·iotdb
一个天蝎座 白勺 程序猿2 天前
Apache IoTDB(10):数据库操作——从查询到优化的全链路实践指南
数据库·apache·时序数据库·iotdb
云计算老刘2 天前
1.项目实战:LAMP-LNMP-分离部署
linux·mysql·php·apache·mariadb
SelectDB2 天前
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
数据库·apache
可涵不会debug2 天前
时序数据库选型指南:大数据时代下Apache IoTDB的崛起之路
大数据·apache·时序数据库
p***q782 天前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache