概述
本章节我们学习如何配置 airflow,默认的 airflow 配置不够强大,我们需要自定义配置项
数据库配置
默认的 airflow 使用的是 sqlite 数据库,在生产环境中,我们可能需要设置 MySQL 或者 PostgreSQL 数据库,对于数据库修改我们需要修改配置文件 airflow.conf
- MySQL
sql_alchemy_conn = mysql+mysqldb://airflow_user:password@localhost:3306/airflow_db
- PG
sql_alchemy_conn = postgresql+psycopg2://airflow_user:password@localhost:5432/airflow_db
配置安全模型
默认的 airflow 使用的安全模型功能很简单,而且每次会生产一个不同的密码,这不能用在生产环境,我们需要使用 fab安全模型
- 设置安全模型后端
auth_backends = airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
- 数据库迁移
airflow db init
这将生成 fab 需要的数据库表
- 创建用户
airflow users create \
--username admin \
--firstname First \
--lastname Last \
--role Admin \
--email admin@example.com \
--password your_password
创建新的用户
设置之后就可以使用自定义用户登录了
优化配置项
以默认的 airflow 配置运行任务性能不好,观察你的系统,分析性能瓶颈再修改以下配置项来优化执行
| 参数 | 建议值 | 说明 |
|---|---|---|
parallelism |
64 - 256 |
全局限制:整个 Airflow 环境同时运行的任务实例数 |
max_active_tasks_per_dag |
16 - 32 |
防止单个 DAG 占满所有工作槽位 |
max_active_runs_per_dag |
3 - 5 |
限制单个 DAG 同时运行的批次数,防止压垮系统 |
parsing_processes |
CPU 核心数 - 1 |
调度器解析 DAG 文件的并发进程数,提升解析速度 |
scheduler_heartbeat_sec |
5 |
调度器心跳间隔 |
min_file_process_interval |
30 |
DAG 文件最小解析间隔 |
dag_dir_list_interval |
60 |
DAG 目录扫描频率 |