airflow的安装


前言

随着任务的增多, 需要顺序的自动执行, 这个时候就需要有一款合适的框架, 对工作流进行执行和监控, 所以在这里选择了airflow的使用.

一、Airflow基本概念

1.概念

Airflow 是一个以编程方式编写,安排和监视工作流的平台。

使用 Airflow 将工作流编写任务的有向无环图(DAG)。Airflow 计划程序在遵循指定的依赖项,同时在一组工作线程上执行任务。丰富的命令实用程序使在 DAG 上执行复杂的调度变的轻而易举。丰富的用户界面使查看生产中正在运行的管道,监视进度以及需要时对问题进行故障排除变的容易。

2. 名词

(1)Dynamic:Airflow 配置需要实用 Python,允许动态生产管道。这允许编写可动态。这允许编写可动态实例化管道的代码。
(2)Extensible:轻松定义自己的运算符,执行程序并扩展库,使其适合于您的环境。
(3)Elegant:Airlfow 是精简的,使用功能强大的 Jinja 模板引擎,将脚本参数化内置于 Airflow 的核心中。
(4)Scalable:Airflow 具有模板块架构,并使用消息队列来安排任意数量的工作任务。

二、Airflow安装

1.Airflow官网

https://airflow.apache.org

2.安装python环境

Airflow 是由 Python 语言编写的 Web 应用,要求 Python3.8 的环境。

3. 安装anaconda3

此处省略1万字…, 自行百度安装即可或是之前我的博客查看

说明:conda 环境管理常用命令
创建环境:conda create -n env_name
查看所有环境:conda info --envs
删除一个环境:conda remove -n env_name --all

4. 创建airflow虚拟环境

# 1. 创建对应的虚拟环境
conda create --name airflow python=3.8
# 2. 激活airflow环境
conda activate airflow
# 3. 退出当前环境
conda deactivate
# 4. 查看python当前版本
python -V

5. 安装Airflow

1. 更改pip源

依次执行以下命令

conda activate airflow
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo mkdir ~/.pip
sudo vim ~/.pip/pip.conf

添加一下内容

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

2. 安装airflow

pip install "apache-airflow==2.4.3"

3. 初始化airflow

airflow db init

4. 查看版本

airflow version

5. 查看airflow安装的路径

pwd

6.创建账号

airflow users create \
--username admin \
--firstname bigdata \
--lastname bigdata \
--role Admin \
--email xxxx@qq.com

在这里插入图片描述
此时输入密码, 这里的密码设置的为123456

7. 启动airflow调度

airflow scheduler -D

8. 启动airflow web 服务,

  • 启动后浏览器访问: http://localhost:8080
airflow webserver -p 8080 -D

在这里插入图片描述
在这里插入图片描述
则已经进入了airflow的页面.

6. 安装后的细节问题

页面中显示了两个问题,第一个问题是希望将元数据存放在MySQL或者PostgresSQL中,第二个问题是不建议用这个执行器,接下来我们进行改进
在这里插入图片描述

1. 修改数据库为mysql

  • 尝试了docker容器的方法进行MYSQL配置,成功
  • 解决步骤
    • 安装docker
      apt install docker.io
      
    • 拉取mysql镜像
      docker pull mysql:5.7
      
    • 创建容器
      docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
      
    • 执行容器
      docker exec -it mysql bash
      

2. 登录mysql, 并进行airflow数据库的相关配置


#登录MYSQL
mysql -uroot -p123456
#创建个airflow的用户,airflow数据库
CREATE DATABASE IF NOT EXISTS airflow DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
# 创建名称为airflow的数据库
create user 'airflow'@'%' identified by 'password';
# 对airflow赋操作权限
grant all privileges on airflow.* to airflow@localhost identified by 'password';
grant all privileges on airflow.* to 'airflow'@'%' identified by 'password';
flush privileges;

3. 进行airflow的相关配置

#以下默认已经安装airflow
#修改配置文件airflow.cfg
executor = LocalExecutor
sql_alchemy_conn = mysql://airflow:password@localhost:3306/airflow?charset=utf8
sql_engine_encoding = utf-8

4. 重新初始化airflow, 启动相关服务

#如果airflow服务已启动,先kill掉相关服务
ps -ef|egrep 'scheduler|airflow-webserver'|grep -v grep|awk '{print $2}'|xargs kill -9
# 相关初始化
airflow db init

说明: 初始化报错 1067 - Invalid default value for ‘update_at’:
原因:字段 ‘update_at’ 为 timestamp 类型,取值范围是:1970-01-01 00:00:00 到2037-12-31 23:59:59(UTC +8 北京时间从 1970-01-01 08:00:00 开始),而这里默认给了空值,所以导致失败
推荐修改mysql存储时间戳格式: 注意: 重启 MySQL 会造成参数失效

mysql> set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

5. 重新创建账号登录:

airflow users create \
--username admin \
--firstname bigdata \
--lastname bigdata \
--role Admin \
--email xxxx@qq.com

说明: 密码: 123456

6. 启动airflow, 并打开查看

#重启服务
airflow webserver -D
airflow scheduler -D

重新打开页面展示:
在这里插入图片描述
发现之前显示的两行消失, 说明配置成功.

总结

根据以上的步骤, 可以很快的安装和搭建起airflow, 后期就是对其部署和使用了, 部署和使用待下期更新~~~.