调度工具—AirFlow 安装指南

Airflow

基本知识和安装教程参考

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/

配置 airflow 元数据库

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

设置 web 登录用户和密码

安装 password 插件

pip install "apache-airflow[password]" -i https://pypi.tuna.tsinghua.edu.cn/simple/

airflow.cfg

[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth

在python环境中执行如下代码以添加账户

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 
  • 可能的报错

    1. 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)
        
    2. No Module named airflow.contrib.auth

      • 版本问题, 切换低版本。第一次安装跟着这个教程来,大概率不会碰到。
    3. No Module name airflow.www.fab_security

      • 版本问题,切换低版本。第一次安装跟着这个教程来,大概率不会碰到。
    4. airflow.exceptions.AirflowConfigException: error: cannot use sqlite with the LocalExecutor

      • 安装高版本的 airflow 和 低版本的 cfg 文件不兼容问题,第一次安装跟着这个教程来,大概率不会碰到。
      • 直接干掉 rm -rf ~/airflow
      • 然后重装 airlow 1.10.3
    5. Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql

    6. 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;
        

启动 web 页面

airflow websever -p 33333

使用案例

后面再补

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值