Centos7安装Apache-Airflow

Centos7安装Apache-Airflow

本文只适用于安装运行airflow,本人也刚入坑airflow没有强大的理论知识,只能做此文,忘后人不入此坑
centos7安装就不多bb了
运行环境:
centos7
python3.7
airflow 1.10.9
centos7自带python2.x版本
注意千万不要删除系统自带的python2.x,删除的话会导致yum不能使用,当然也有其他办法解决这个问题,所以还是不删为妙

安装python3.7

这里借鉴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
  • 下载安装包解压
    apk是我自己创建的文件夹放安装包用的
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
  • 配置环境变量
    先echo $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

然后将你的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
  • 验证
    因为有系统自带的python2.x的存在,所以验证安装的python3.7时需要下面这样验证
python3 -V
pip3 -V

配置pip源

因为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

这里配置的是阿里源还有清华大学源等等,自己从网上搜即可。

安装airflow

#首先安装各种库
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

因为airflow需要操作数据库,这里我使用的是mysql数据库

#安装依赖
pip install pymysql

修改配置文件 ~/airflow/airflow.cfg

[core]
executor = LocalExecutor   # 代表本地任务可并行执行
sql_alchemy_conn = mysql+mysqldb://root:mysql@127.0.0.1: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运行

运行命令

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。
本文有问题随时评论区讨论,奥利给。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值