彻底掌握 Apache Airflow:从安装到运行完整工作流的终极指南!
彻底掌握 Apache Airflow:从安装到运行完整工作流的终极指南!
Apache Airflow是一个强大的开源工作流调度平台,广泛应用于数据工程和机器学习领域。本文将从Airflow的背景、核心组件到实际安装和运行,手把手教你掌握这个重要的工具。
Airflow 诞生的背景
Airflow的诞生是为了解决管理多个数据管道和工作流的复杂性。在Airflow出现之前,许多组织依赖于cron任务、自定义脚本以及其他低效的方法来处理由数百万用户频繁生成的大数据。然而,这些解决方案难以维护、缺乏灵活性,并且由于无法可视化正在运行的工作流状态、监控失败点和调试错误,使得管理变得更加困难。
Apache Airflow(简称Airflow)最初由Maxime Beauchemin于2014年10月在Airbnb创建。从一开始,它就是一个开源项目,并于2015年6月正式托管在Airbnb的GitHub账号下。到了2016年3月,该项目进入Apache软件基金会(Apache Software Foundation, ASF)的孵化计划,并最终成为我们今天熟知的Apache Airflow。
谁在使用 Apache Airflow?
目前,大多数数据专业人士(如数据工程师、机器学习工程师)以及顶级公司(如Airbnb、Netflix)都在日常工作中使用Apache Airflow。因此,在本文中,你将学习如何安装和使用Apache Airflow。
前置要求
要充分理解本教程,你需要具备Python编程语言的基础知识,因为代码示例和Airflow框架都是基于Python编写的。本教程将帮助你熟悉Apache Airflow平台,并指导你完成安装及执行简单任务。
什么是 Apache Airflow?
根据Apache Airflow官方文档,它被定义为:
“一个用于开发、调度和监控批处理工作流的开源平台。”
由于Airflow的核心基于Python框架,用户可以使用它来构建可与几乎所有技术连接的工作流。Airflow可以部署为一个独立单元(如在本地笔记本电脑上运行),也可以部署在分布式系统上,以支持超大规模的工作流。
Airflow设计的核心理念是“编程化”,即所有工作流均以Python代码的形式表示。
Apache Airflow 的核心组件
1. DAG(有向无环图)
DAG(Directed Acyclic Graph,有向无环图)是一组任务的集合,并以一种显示它们关系和依赖性的方式组织起来。它代表了工作流的图结构,其中:
- 节点(Node)代表要执行的任务
- 边(Edge)表示任务之间的依赖关系
“有向(Directed)”表示任务按固定顺序执行,而“无环(Acyclic)”确保任务不会形成循环,防止重复执行。DAG以Python脚本的形式编写,并存储在Airflow的DAG_FOLDER中。
2. 任务(Tasks)
任务是DAG中的基本执行单元,它代表单个活动或工作单元。例如:
- 运行SQL查询
- 从数据库读取数据
- 进行数据转换等
3. 操作符(Operators)
操作符用于创建DAG内的具体任务。每个操作符都会定义任务的类型,例如:
- BashOperator:执行Bash命令
- EmailOperator:发送邮件
- PythonOperator:调用Python函数
DAG主要用于组织任务的执行顺序,而操作符则是定义任务的具体操作。
4. 调度(Scheduling)
Airflow通过调度器(Scheduler)实现任务调度。调度器会:
- 监控所有可用任务和DAG
- 在任务的所有依赖项满足时触发任务实例
调度器会在后台运行,不断检查活动任务,以决定它们是否可以被触发。
5. XComs(跨任务通信)
XComs(Cross-Communication的缩写)用于在任务之间传递数据。它们存储键(Key)、值(Value)、时间戳(Timestamp)以及创建XCom的任务/DAG。
6. Hooks(钩子)
钩子是外部平台或资源的接口层,它允许任务轻松连接到外部系统,而无需手动进行身份验证或复杂的通信过程。
7. Web UI
Airflow提供Web UI(用户界面),用于可视化监控数据管道和排查问题。
如何在本地运行 Apache Airflow?
在本地安装并运行Apache Airflow主要涉及:
- 设置Airflow环境
- 初始化数据库
- 启动Airflow Web服务器
- 运行Airflow任务调度器
按照以下步骤操作:
Step 1:创建 Python 虚拟环境
python3 -m venv airflow_tutorial
Step 2:激活虚拟环境
- Mac/Linux
source airflow_tutorial/bin/activate
- Windows
airflow_tutorial\Scripts\activate
Step 3:安装 Apache Airflow
在激活的虚拟环境中运行:
pip install apache-airflow
Step 4:初始化 Airflow 数据库
airflow db init
这将默认在~/airflow
目录下生成所需的表和配置。
Step 5:创建 Airflow 管理员用户
airflow users create \
--username admin \
--firstname FirstName \
--lastname LastName \
--role Admin \
--email admin@example.com
执行此命令后,系统会提示你输入管理员密码。
Step 6:启动 Airflow Web 服务器
airflow webserver --port 8080
然后,在浏览器中打开终端显示的URL,并使用Step 5创建的账号登录。
Step 7:启动 Airflow 调度器
在新终端窗口中重新激活虚拟环境(同Step 2),然后运行:
airflow scheduler
Step 8:创建并运行自定义 DAG
在~/airflow/dags/
目录下创建dags_tutorial.py
,并写入以下代码:
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator
# 创建 DAG
with DAG(dag_id="demo", start_date=datetime(2025, 1, 5), schedule="0 0 * * *") as dag:
# 定义任务
hello = BashOperator(task_id="hello", bash_command="echo hello")
@task()
def airflow():
print("airflow")
# 设置任务依赖
hello >> airflow()
运行后,DAG将自动出现在Airflow Web UI中。
结论
Apache Airflow是一个强大且灵活的开源平台,能够高效管理多个工作流和数据管道。它不仅提供编程化的开发体验,还具备强大的UI界面,可用于监控和调试任务。
在本教程中,我们学习了:
- Apache Airflow的基本概念
- 如何安装和配置Airflow
- 如何创建和运行一个简单的DAG
建议你将Airflow纳入日常开发实践,以快速熟悉该技术!🎯🚀