本文记录当前airflow的两种安装方式,当前最新版本为2.5.1
。
注:就目前而言,airflow版本大于2.3.0时,官方推荐python的版本为3.7-3.10,3.11暂不支持。
使用pip安装
安装python
创建虚拟环境
1
2
3
4
5# 方式1
pyenv virtualenv 3.9.10 venvAirflow
# 方式2
python -m virtualenv venvAirflow安装airflow
默认会安装在~/airflow
下,可通过指定环境变量修改,如:export AIRFLOW_HOME=~/airflow
1 | # 只包含启动的基础部分内容,扩展包其它方式安装,参照官网 |
初始化数据库,默认使用sqlite存储元数据,仅用于测试环境。生产环境下的并发支持需用mysql或psql
1
airflow db init
初始用户为
admin
,密码见同目录下文件standalone_admin_password.txt
启动web服务器
两种方式启动
一键启动:
1
airflow standalone
手动运行airflow各个部分:
1
2
3
4
5
6
7
8
9
10
11
12airflow db init
airflow users create \
--username admin \
--firstname Peter \
--lastname Parker \
--role Admin \
--email spiderman@superhero.org
airflow webserver --port 8080
airflow scheduler
- 访问web界面
访问http://localhost:8080
,将看到web界面
通过docker-compose安装
- 检查内存是否足够
官方建议至少为docker engine
分配4GB内存,最好是8GB,通过下述命令检测。
1 | docker run --rm "debian:bullseye-slim" bash -c 'numfmt --to iec $(echo $(($(getconf _PHYS_PAGES) * $(getconf PAGE_SIZE))))' |
- 下载
docker-compose.yaml
该文件定义了多个服务:1
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'
- airflow-scheduler:调度程序监视所有任务和DAGs,并在任务实例的依赖关系完成后触发
- airflow-webserver:http://localhost:8080
- airflow-worker:执行调度程序分配的任务
- airflow-init:初始化服务
- postgres:数据库
- redis:消息从scheduler转发到worker的代理broker
- flower:环境监控,http://localhost:5555
创建挂载目录及用户设置
1
2mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env初始化数据库
1
2
3
4
5
6
7docker compose up airflow-init
# 当初始化完成将看到下述输出
# airflow-init_1 | Upgrades done
# airflow-init_1 | Admin user airflow created
# airflow-init_1 | 2.5.1
# start_airflow-init_1 exited with code 0初始化用户密码为
airflow/airflow
运行airflow
1
2
3
4
5
6
7
8
9docker-compose up
# 执行docker-compose ps -a看到下述输出则说明正常运行
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 247ebe6cf87a apache/airflow:2.5.1 "/usr/bin/dumb-init …" 3 minutes ago Up 3 minutes (healthy) 8080/tcp compose_airflow-worker_1
# ed9b09fc84b1 apache/airflow:2.5.1 "/usr/bin/dumb-init …" 3 minutes ago Up 3 minutes (healthy) 8080/tcp compose_airflow-scheduler_1
# 7cb1fb603a98 apache/airflow:2.5.1 "/usr/bin/dumb-init …" 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:8080->8080/tcp compose_airflow-webserver_1
# 74f3bbe506eb postgres:13 "docker-entrypoint.s…" 18 minutes ago Up 17 minutes (healthy) 5432/tcp compose_postgres_1
# 0bd6576d23cb redis:latest "docker-entrypoint.s…" 10 hours ago Up 17 minutes (healthy) 0.0.0.0:6379->6379/tcp compose_redis_1如何使用
在启动airflow后,有以下三种使用方式:
通过CLI命令
1
2
3
4
5
6
7
8
9
10
11
12
13# 同样可以使用CLI命令
docker-compose run airflow-worker airflow info
# 或者下载官方提供的命令包装脚本
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/airflow.sh'
chmod +x airflow.sh
./airflow.sh info
# 同时支持进入交互式bash shell,或进入python容器
./airflow.sh bash
./airflow.sh python通过Web页面
使用预设用户密码airflow/airflow
进入web页面http://localhost:8080
- 使用REST API接口
如下命令简单参考,更详细可查阅官方文档
1 | ENDPOINT_URL="http://localhost:8080/" |
- 清除
若要停止和删除容器,删除数据卷及镜像的话可参考下述命令:
1 | docker-compose down --volumes --rmi all |