本文只适用于安装运行airflow,本人也刚入坑airflow没有强大的理论知识,只能做此文,忘后人不入此坑
centos7安装就不多bb了
运行环境:
centos7
python3.7
airflow 1.10.9
centos7自带python2.x版本
注意千万不要删除系统自带的python2.x,删除的话会导致yum不能使用,当然也有其他办法解决这个问题,所以还是不删为妙
这里借鉴python3安装
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
cd /usr/local/apk
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz
mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/apk/jdk1.8.0_191/bin:/usr/local/nginx/sbin:/mnt/web/nginxs/sbin:/root/bin
然后将你的python3.7地址加入到后面然后配置进去/etc/profile
vim /etc/profile
# 将这个配置进去
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/apk/jdk1.8.0_191/bin:/usr/local/nginx/sbin:/mnt/web/nginxs/sbin:/root/bin:/usr/local/python3/bin
# 记得应用一下
source /etc/profile
python3 -V
pip3 -V
因为pip默认源在外网相当慢,所以得配置一个国内的源。
[root@localhost ~]# cd ~
[root@localhost ~]# mkdir .pip
[root@localhost ~]# cd .pip
[root@localhost .pip]# vim pip.conf
# 然后在pip.conf写入如下配置
[global]
index-url=http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com
这里配置的是阿里源还有清华大学源等等,自己从网上搜即可。
#首先安装各种库
yum install python-devel
yum install libevent-devel
yum install mysql-devel
#设置临时环境变量
export SLUGIFY_USES_TEXT_UNIDECODE=yes
#添加编辑环境变量
vi /etc/profile
#airflow
export AIRFLOW_HOME=~/airflow
#记得source一下
source /etc/profile
#安装airflow
pip3 install apache-airflow
安装成功后进行查看
[root@localhost .pip]# airflow version
[2020-04-10 18:30:38,653] {settings.py:253} INFO - settings.configure_orm(): Using pool settings. pool_size=5, max_overflow=10, pool_recycle=1800, pid=2715
____________ _____________
____ |__( )_________ __/__ /________ __
____ /| |_ /__ ___/_ /_ __ /_ __ \_ | /| / /
___ ___ | / _ / _ __/ _ / / /_/ /_ |/ |/ /
_/_/ |_/_/ /_/ /_/ /_/ \____/____/|__/ v1.10.9
这个表示已经安装成功了。
因为airflow需要操作数据库,这里我使用的是mysql数据库
#安装依赖
pip install pymysql
修改配置文件 ~/airflow/airflow.cfg
[core]
executor = LocalExecutor # 代表本地任务可并行执行
sql_alchemy_conn = mysql+mysqldb://root:[email protected]:3306/airflow
# executor 简介
SequentialExecutor:单进程顺序执行任务,默认执行器,通常只用于测试
LocalExecutor:多进程本地执行任务
CeleryExecutor:分布式调度,生产常用
DaskExecutor :动态任务调度,主要用于数据分析
遇到的坑点
这里有个坑之前我不知道安装pymysql直接运行直接报错
ModuleNotFoundError: No module named 'MySQLdb'
因为python3已经不支持mysqldb了,用pymysql或者mysqlclient都ok
python2支持mysqldb
SQL: ALTER TABLE dag CHANGE last_scheduler_run last_scheduler_run DATETIME(6) NULL](Background on this error at: http://sqlalche.me/e/f405)
版本问题坑,我本机用的mysql5.5
这个没法修改DateTime函数的问题,我一直没找到解决方法,后来用了比5.5高的版本。
Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql
timestamp这个数据类型,有个坑就是在默认值上,MySql-5.6.6弃用了explicit_defaliazhpults_for_timestamp这个系统变量。我的版本却高于5.6.6,所以就掉进去了。
俩种解决方法
1.修改源码 DATETIME(fsp=6)
2.mysql配置explicit_defaults_for_timestamp=true
当然第二种最快
记得先建个airflow的库不然会报错
然后进行给你的数据库建表,也就是初始化airflow所用的数据库
airflow initdb
运行命令
airflow webserve
airflow webserve -D #后台运行
也可以指定端口运行,详情请见airflow运行命令
这里运行的时候我碰了个坑
sqlalchemy.exc.NoInspectionAvailable: No inspection system is available for object of type <class 'method'>
原因是我的sqlalchemy版本问题我的这个环境版本高了
pip3 uninstall SQLAlchemy
pip3 install SQLAlchemy==1.3.15
然后就运行起来了访问你服务器的ip地址+8080端口即可http://localhost:8080。
本文有问题随时评论区讨论,奥利给。