Airflow单机部署
Airflow单机部署[编辑 | 编辑源代码]
Airflow单机部署是指在单个服务器或计算机上安装和配置Apache Airflow工作流管理系统的过程。这种部署方式适合开发、测试环境或小规模生产环境,能够帮助用户快速搭建Airflow环境进行学习和实验。
介绍[编辑 | 编辑源代码]
Apache Airflow是一个开源的工作流自动化和调度系统,用于以编程方式编写、调度和监控工作流。单机部署是最简单的Airflow部署方式,适合初学者了解Airflow的核心概念和基本功能。在单机部署中,所有Airflow组件(如Web服务器、调度器、执行器和元数据库)都运行在同一台机器上。
单机部署的主要特点包括:
- 简单易行,适合开发和测试
- 不需要分布式环境
- 使用SQLite或本地数据库(如PostgreSQL、MySQL)作为元数据存储
- 执行器通常使用SequentialExecutor或LocalExecutor
前置条件[编辑 | 编辑源代码]
在开始Airflow单机部署之前,需要确保系统满足以下要求:
- Python 3.6+
- pip(Python包管理器)
- 可选的数据库(如PostgreSQL、MySQL,如果不想使用默认的SQLite)
- 足够的系统资源(建议至少2GB内存)
安装步骤[编辑 | 编辑源代码]
1. 创建Python虚拟环境[编辑 | 编辑源代码]
建议使用虚拟环境来隔离Airflow的安装:
python -m venv airflow_venv
source airflow_venv/bin/activate # Linux/macOS
# 或者
# airflow_venv\Scripts\activate # Windows
2. 安装Airflow[编辑 | 编辑源代码]
使用pip安装Airflow,指定版本以避免兼容性问题:
pip install "apache-airflow==2.3.0" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.3.0/constraints-3.7.txt"
3. 初始化数据库[编辑 | 编辑源代码]
Airflow需要一个数据库来存储元数据。初始化数据库:
airflow db init
此命令会创建SQLite数据库(默认)和必要的表结构。
4. 创建用户[编辑 | 编辑源代码]
为Web界面创建管理员用户:
airflow users create \
--username admin \
--firstname First \
--lastname Last \
--role Admin \
--email admin@example.com
5. 启动服务[编辑 | 编辑源代码]
启动Web服务器(默认端口8080):
airflow webserver --port 8080
在另一个终端启动调度器:
airflow scheduler
配置Airflow[编辑 | 编辑源代码]
Airflow的主要配置文件是`airflow.cfg`,位于`~/airflow`目录。重要的配置项包括:
- `executor`: 设置执行器类型(单机部署常用LocalExecutor)
- `sql_alchemy_conn`: 数据库连接字符串
- `dags_folder`: DAG文件的存放位置
使用LocalExecutor[编辑 | 编辑源代码]
要使用LocalExecutor(允许并行执行任务),修改`airflow.cfg`:
executor = LocalExecutor
然后重新初始化数据库:
airflow db init
验证安装[编辑 | 编辑源代码]
访问Web界面(http://localhost:8080)并使用之前创建的用户登录。你应该能看到Airflow的仪表盘。
运行示例DAG:
airflow dags list
实际案例[编辑 | 编辑源代码]
以下是一个简单的DAG示例,展示如何在单机部署中使用Airflow:
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash import BashOperator
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'example_dag',
default_args=default_args,
description='一个简单的示例DAG',
schedule_interval=timedelta(days=1),
start_date=datetime(2023, 1, 1),
catchup=False,
) as dag:
t1 = BashOperator(
task_id='print_date',
bash_command='date',
)
t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
)
t1 >> t2
将此文件保存为`~/airflow/dags/example_dag.py`,Airflow将自动加载它。
架构图[编辑 | 编辑源代码]
以下是单机部署的Airflow架构示意图:
常见问题[编辑 | 编辑源代码]
端口冲突[编辑 | 编辑源代码]
如果8080端口被占用,可以使用其他端口启动Web服务器:
airflow webserver --port 8081
数据库问题[编辑 | 编辑源代码]
要使用PostgreSQL代替SQLite:
1. 安装PostgreSQL和Python适配器:
pip install psycopg2-binary
2. 修改`airflow.cfg`:
sql_alchemy_conn = postgresql+psycopg2://user:password@localhost/airflow
3. 重新初始化数据库。
性能考虑[编辑 | 编辑源代码]
对于生产环境,单机部署可能遇到以下限制:
- 任务并行度受限于单机资源
- 无高可用性
- 扩展性有限
对于生产环境,应考虑分布式部署(如CeleryExecutor或KubernetesExecutor)。
结论[编辑 | 编辑源代码]
Airflow单机部署是学习和测试Airflow的理想方式。通过本文的步骤,用户可以快速搭建一个功能完整的Airflow环境,并开始创建工作流。虽然单机部署不适合大规模生产环境,但它为理解Airflow的核心概念和功能提供了坚实的基础。