1.什么是airflow
Apache Airflow是一个开源的以编程方式编写、调度和监控工作流的平台。
工作流使用代码进行定义,让它们变得更加可维护、可版本化、可测试和协作性。
本文基于conda,讲解Airflow的单机版安装过程
2.安装
2.1.准备python虚拟环境
创建一个新的Python虚拟环境
conda create --name airflow_env python=3.9 -y
conda activate airflow_env
因为服务器不能访问https://raw.githubusercontent.com
,所以constraints.txt文件需要提前下载好并上传至服务器
本文使用的是:https://raw.githubusercontent.com/apache/airflow/constraints-2.2.3/constraints-no-providers-3.9.txt
注意:URL的格式是: https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt
根据实际情况,调整airflow及python的版本,调整后要确保在浏览器中能正常打开此URL
export AIRFLOW_HOME=~/airflow
pip install "apache-airflow==2.2.3" --constraint ./constraints-no-providers-3.9.txt
2.2.Airflow初始化
airflow db init
airflow users create --username admin --password admin --firstname zhang --lastname san --role Admin --email zhangsan@163.com
2.3.Airflow启动
默认情况下,webserver使用8080端口,如果被占用(使用lsof -i tcp:8080
检查),则需要修改$AIRFLOW_HOME/airflow.cfg文件中的如下三项配置
endpoint_url = http://ip:8088
web_server_port = 8088
base_url = http://ip:8088
airflow webserver -D
airflow scheduler -D
成功启动后,打开airflow web界面如下:
3.其它
3.1.如何去除airflow的DAG 样例?
- 修改$AIRFLOW_HOME/airflow.cfg,将
load_examples = True
修改为load_examples = False
- 重置数据库
airflow db reset
- 重新启动webserver 、scheduler
3.2.更改元数据数据库
不要在生产中使用SQLite作为元数据数据库——它应该只用于开发/测试
3.2.1.查看当前配置
查看当前元数据数据库的配置: airflow config get-value core sql_alchemy_conn
3.2.2.更改步骤
- 创建数据库、用户
## 创建数据库、用户
CREATE DATABASE airflow CHARACTER SET utf8 COLLATE utf8_general_ci;
create user 'airflow'@'%' identified by 'airflow';
create user 'airflow'@'localhost' identified by 'airflow';
GRANT ALL PRIVILEGES ON airflow.* TO 'airflow';
flush privileges;
如果执行失败,则使用下面的语句 查看字符集、更改密码策略
show variables like 'character_set%';
show variables like 'collation%';
set global validate_password_length=0;
set global validate_password_policy=0;
show variables like 'val%';
- 修改$AIRFLOW_HOME/airflow.cfg
sql_alchemy_conn = mysql+mysqldb://airflow:airflow@172.25.21.29:3306/airflow
- 修改数据库配置:修改my.cnf,在 [mysqld] 部分添加:
explicit_defaults_for_timestamp=1
,注意:修改为要重启数据库 - 安装mysqlclient
pip install mysqlclient==2.1.0
,注意报:OSError: mysql_config not found
,请先安装mysql5.7.x的客户端即可。 - 初始化数据库
airflow db init
- 创建admin用户
airflow users create --username admin --password admin --firstname zhang --lastname san --role Admin --email zhangsan@163.com
3.3. 修改Executor
- 修改$AIRFLOW_HOME/airflow.cfg,将
executor = SequentialExecutor
修改为executor = LocalExecutor
- 重新启动webserver 、scheduler
3.4. 如何安装provider
参见: installing-and-upgrading-providers,示例如下:
- 安装mysql provider:
pip install apache-airflow-providers-mysql==2.1.1
- 安装jdbc provider:
pip install apache-airflow-providers-jdbc==2.0.1
- 安装http provider:
pip install apache-airflow-providers-http==2.0.1
安装后,查看providers列表如下:
日志配置
参见如下文章:
Airflow Logs
airflow中log表详解
查看当前配置:airflow config list
参考
airflow-install
airflow local install
airflow production-deployment
airflow set-up-database
airflow lineage