基本知识和安装教程参考
Airflow 入门及使用 - 知乎 (zhihu.com)
Airflow 1.10安装 - 知乎 (zhihu.com)
Centos 7 安装Airflow_西卡同学的csdn的博客-CSDN博客
Airflow 和 Azkaban的选型
# 注意版本问题哦~最好一致
python=3.7
airflow==1.10.3
# Note 注意 airflow 版本问题!!! pip 安装的时候注意指定版本!!!!!
# 高版本的 airflow 会出现比较多的 no module named xxx 错误
# eg: No Module named airflow.contrib.auth
# eg: No Module name airflow.www.fab_security
vim /etc/profile
export AIRFLOW_HOME=~/airflow
source /etc/profile
cd /root/airflow
# 注意这个文件保存的是 airlfow 的配置文件 后期需要进行修改
# 如果安装高版本之后发现报错进行不下去, 重新安装的 airflow 的时候 先卸载 pip install apache-airflow, 然后删掉这个目录 rm -rf ~/airflow
# 然后干掉mysql里面的 ariflowdb(自己建的数据库, 名字可能不一样, 有的教程是 airflow) 数据库
yum install mysql-devel gcc gcc-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
# 不建议之间修改默认的 pypi 数据源, 后期如果安装一些比较新的包, 清华镜像源可能没有,但是大概率是有的,直接修改默认镜像源没什么问题
python3 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install paramiko -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install apache-airflow==1.10.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
python3 -m pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip install apache-airflow-providers-mysql==2.2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip install apache-airflow[all] -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip install apache-airflow[mysql] -i https://pypi.tuna.tsinghua.edu.cn/simple/
mysql -uroot -pBdp2020!!
create database airflowdb;
grant all PRIVILEGES on airflowdb.* to airflow@'localhost' identified by 'Bdp2020!!';
flush privileges;
cd ~/airflow # 自行注意自己的安装目录
vim airflow.cfg
# airflow 默认使用 sqlite 所以需要修改配置文件改为 mysql
# 配置连接mysql 30行
# 具体行数待定, 建议将配置文件拖到本地, 使用 sublime 或者其他文本编辑器直接编写
# 注意这里输入的是自己的 mysql 的 ip, user, password, port 和 database
# 注意 database 的名字一致, 不同教程创建的数据库名不一样
# 注意自己的连接 MySQL 的引擎
# 需要安装 pymysql
sql_alchemy_conn = mysql+pymysql://root:Bdp2020!!@192.168.19.3:3306/airflowdb
# 配置登录ip和端口号 460行
# 修改为本机 ip 端口号注意防止占用, 建议不使用默认的 8080, 这个端口使用的很多
= http://localhost:33333
web_server_host = 192.168.19.3
web_server_port = 33333
#设置airflow用户名和密码
#在[webserver]下面配置 447行
# auth_backend --》 auth_backends 注意版本
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
# 修改时区, 默认的是 UTC
default_timezone = Asia/Shanghai
# airflow db init # 高版本执行指令, 低版本直接用下面的
airflow initdb
可能遇到的问题
Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
AirFlow初始化的时候遇到 Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql - 百里登峰 - 博客园 (cnblogs.com)
use airflowdb
show global variables like '%timestamp%';
set global explicit_defaults_for_timestamp =1;
ModuleNotFoundError: No module named ‘flask_bcrypt’
pip install flask_bcrypt
pip install "apache-airflow[password]" -i https://pypi.tuna.tsinghua.edu.cn/simple/
[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'admin' # 用户名
user.email = 'example@163.com' # 用户邮箱
user.password = 'admin' # 用户密码
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
# 下面都是高版本的指令, 低版本没有这个参数 需要注意版本问题
# airflow users create --lastname user --firstname admin --username admin --email admin@qq.com --role Admin --password admin
# airflow users create --role Admin --firstname YeeHn --lastname sun --password 123456 --username sunyh --email 2286123610@qq.com
可能的报错
No Module named MYSQLDB
没有安装连接 MySQL 驱动
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 根据自己的操作系统选择安装, 我这里是 linux 所以安装这个
yum -y install MySQL-python
# easy_install mysql-python (mix os)
# pip install mysql-python (mix os)
# apt-get install python-mysqldb (Linux Ubuntu)
# cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
# yum install MySQL-python (linux Fedora, CentOS)
# pip install mysqlclient (Windows)
No Module named airflow.contrib.auth
No Module name airflow.www.fab_security
airflow.exceptions.AirflowConfigException: error: cannot use sqlite with the LocalExecutor
Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
AirFlow初始化的时候遇到 Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql - 百里登峰 - 博客园 (cnblogs.com)
进入mysql airflow 数据库,设置global explicit_defaults_for_timestamp
use airflow db;
show global variables like '%timestamp%';
set global explicit_defaults_for_timestamp =1;
ALTER TABLE xxx ADD COLUMN xxx VARCHAR(35)
如果已经执行过一次 airflow db init (安装高版本各种导包失败。所以会有遗留问题)那么会在 airflowdb 中生成表, 所以再次初始化额时候会报错。
直接干掉这个 airflowdb 库, 然后再新建, 然后执行 airflow initdb
drop database airflow
create database airflow
grant all PRIVILEGES on airflowdb.* to airflow@'localhost' identified by 'Bdp2020!!';
flush privileges;
airflow websever -p 33333
后面再补