数据中台工作流编排引擎: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(服务)协同使用。


相关推荐
雾迟sec3 小时前
Web安全-文件上传漏洞-黑白名单及其它绕过思路(附思维导图)
javascript·安全·web安全·网络安全·apache·安全威胁分析
yumgpkpm6 小时前
CMP(类Cloudera CDP 7.3 404版华为泰山Kunpeng)和Apache Doris的对比
大数据·hive·hadoop·spark·apache·hbase·cloudera
zhangkaixuan4567 小时前
Apache Paimon 查询全流程深度分析
java·apache·paimon
A-刘晨阳1 天前
时序数据库选型指南:从大数据视角切入,聚焦 Apache IoTDB
大数据·apache·时序数据库·iotdb
迦蓝叶1 天前
使用 Apache Jena 构建 Java 知识图谱
java·apache·知识图谱·图搜索·关系查询·关系推理
zhangkaixuan4562 天前
Apache Paimon 写入流程
java·大数据·apache·paimon
DolphinScheduler社区2 天前
Apache DolphinScheduler 3.3.2 正式发布!性能与稳定性有重要更新
大数据·开源·apache·任务调度·海豚调度·发版
SeaTunnel2 天前
Apache SeaTunnel 支持 Metalake 开发了!避免任务配置敏感信息暴露
大数据·开源·apache·个人开发·数据集成·seatunnel·看开源之夏
Mr_Art892 天前
金融行业湖仓实践:Apache Paimon 小文件治理之道
数据仓库·金融·apache