airflow配置信息
Airflow 1.10+安装
本次安装Airflow版本为1.10+,其需要依赖Python和DB,本次选择的DB为Mysql。
本次安装组件及版本如下:Airflow == 1.10.0
Python == 3.6.5
Mysql == 5.7
整体流程
- 建表
- 安装
- 配置
- 运行
- 配置任务
启动schedule
airflow scheduler -D
启动webserver
airflow webserver -D
ps -ef|grep -Ei '(airflow-webserver)'| grep master | awk '{print $2}'|xargs -i kill {
}
ps -ef | grep -Ei 'airflow' | grep -v 'grep' | awk '{print $2}' | xargs -i kill {
}
建库、建用户
库名为airflow
‘create database airflow;’
建用户
用户名为airflow,并且设置所有ip均可以访问。
create user ‘airflow’@’%’ identified by ‘airflow’;
create user ‘airflow’@‘localhost’ identified by ‘airflow’;
用户授权
这里为新建的airflow用户授予airflow库的所有权限
grant all on airflow.* to 'airflow'@'%';
flush privileges
Airflow安装
这里通过 virtualenv 进行安装。
----- 通过virtualenv安装
$ mkdir /usr/local/virtual_env && cd /usr/local/virtual_env # 创建目录
$ virtualenv --no-site-packages airflow --python=python # 创建虚拟环境
$ source /usr/local/virtual_env/airflow/bin/activate # 激活虚拟环境
----- 安装指定版本或者默认
$ pip install apache-airflow -i https://pypi.douban.com/simple
在安装完一堆的依赖后,就需要配置 AIRFLOW_HOME 环境变量,后续的 DAG 和 Plugin 都将以该目录作为根目录查找,如上,可以直接设置为 /tmp/project 。
报错
ERROR: flask 1.1.1 has requirement Jinja2>=2.10.1, but you’ll have jinja2 2.10 which is incompatible.
ERROR: flask 1.1.1 has requirement Werkzeug>=0.15, but you’ll have werkzeug 0.14.1 which is incompatible.
执行:pip3 install -U Flask==1.0.4
执行:pip3 install -U pika==0.13.1
重新执行 :pip install apache-airflow -i https://pypi.douban.com/simple
----- 设置环境变量
(airflow) $ export AIRFLOW_HOME=/tmp/airflow
----- 查看其版本信息
(airflow) $ airflow version
____ |( )_______ / /________ __
____ /| |_ /__ / / __ / __ _ | /| / /
___ ___ | / _ / _ / _ / / // / |/ |/ /
// |// // // // _/____/|__/
v1.8.0
执行了上述的命令后,会生成 airflow.cfg 和 unittests.cfg 两个文件,其中前者是一个配置文件 。
airflow 配置
----- 修改Airflow DB配置
1. 安装Mysql模块
pip install “apache-airflow[mysql]”
这里可以简单说下,airflow依赖的其他组件均可以此方式安装。在之后安装password组件同样是通过此方式。
修改Airflow DB配置
修改${AIRFLOW_HOME}/airflow.cfg
sql_alchemy_conn = mysql+mysqldb://airflow:airflow@localhost:3306/airflow
参数的格式为mysql://帐号:密码@ip:port/db
初始化db
新建airflow依赖的表。
airflow initdb
如报错 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
需改sql_alchemy_conn = mysql+mysqldb://airflow:airflow@127.0.0.1:3306/airflow
2. 用户认证
本文采用的用户认证方式为password方式,其他方式如LDAP同样支持但是本文不会介绍。笔者在安装时实验过LDAP方式但是未成功过。
安装pass