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官网
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
- 安装docker
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, 后期就是对其部署和使用了, 部署和使用待下期更新~~~.