pip install apache-airflow
注意点:
0. airflow 对python lib的版本要求很奇怪,会要求一些老版本的lib,导致和其他软件冲突,建议使用 “python -m venv airflow-venv”为它创建单独的环境。
1. airflow 默认用sqlite作数据库,2.0版本的airflow对sqlite的版本要求较高(>3.15)
2. airflow可以不用sqlite,用其他数据库
3. 环境变量 "AIRFLOW_HOME" 很重要,执行airflow命令时,读取配置文件的路径就是根据该环境变量确定。建议配置到 /etc/profile
4. 根据你python的版本要下一个constraints-X.X.txt的文件,用于安装。
以下假设AIRFLOW_HOME=/opt/airflow
第一步:
# bash shell
export AIRFLOW_HOME=/opt/airflow
AIRFLOW_VERSION=2.0.1
PYTHON_VERSION=3.7
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint constraints-${PYTHON_VERSION}.txt # txt文件要预先下载 (e.g. https://raw.githubusercontent.com/apache/airflow/constraints-2.0.1/constraints-3.7.txt)
第二步:mysql建一个空白数据库
# sql
create database airflow character set utf8;
create user airflow identified by 'password';
grant all on airflow.* to airflow;
flush privileges;
第三步:编辑配置文件
在编辑配置文件前,先在命令行里执行一句 “airflow version”,airflow会自动把配置文件初始化出来,放到AIRFLOW_HOME中,但此时用的数据库是sqlite,可能会因为sqlite版本不够高而报错。但没关系我们接下来通过修改配置文件,让airflow改用mysql。
sudo vi ${AIRFLOW_HOME}/airflow.cfg
# 编辑如下配置项
dags_folder = /opt/airflow/dags
web_server_port = 18082
sql_alchemy_conn = mysql+pymysql://airflow:password@localhost:3306/airflow # 注意这里是mysql+pymysql,这句就是改成mysql的关键。
default_timezone = Asia/Shanghai
default_ui_timezone = Asia/Shanghai
load_examples = False
dags_are_paused_at_creation = False # dag初始后不必暂停
第四步:初始化数据库
sudo airflow db init
第五步:创建admin账户
airflow users create \
--username admin \
--firstname a \
--lastname a \
--role Admin \
--email a@b.com
第六步:开启进程
nohup airflow webserver -p 18082 >> ${AIRFLOW_HOME}/logs/webserver.log 2>&1 &
nohup airflow scheduler >> ${AIRFLOW_HOME}/logs/scheduler.log 2>&1 &