Airflow版本升级-v1.10.12-v2.4.1 生产实践

Airflow版本升级 v1.10.12-> v2.4.1 生产实践

升级需求

当前v1.10.12版本有2个问题 (没排查到什么原因就打算升级试试)
1、新建Dag无法定时执行
2、老Dag的执行时间慢24小时

v1.10.12 → v1.10.15(v1到v2桥接版本) → v1.20.4

名称版本备注
Airflowv1.10.12conda环境下
Python3.8.8conda环境下
Supervisor3.8.8conda环境下, 管理Airflow

一、备份

1、由于是阿里云主机 —— 直接服务器打快照即可

2、如果非云主机需要做如下 (保险起见下边这些也可以手动备份下)

配置文件
cp /beta/app/airflow/airflow.cfg{,_1.10.12.bak}
cp /beta/dmp/dwh/beta_dwh/docs/env_conf.py{,_1.10.12.bak}
cp /beta/dmp/dwh/beta_dwh/docs/base_conf.py{,_1.10.12.bak}
cp /etc/supervisor/config.d/airflow.ini{,_1.10.12.bak}

数据库?
使用的postgres, 不用备份, 回滚时将老库重名, 由Airflow创建新库

python包 (conda安装的)
cd /beta/app/anaconda/envs/airflow/lib/python3.8
cp -r site-packages site-packages-1.10.12


变量
平台中Admin -> Variables
命令格式,airflow variables set "exec_date" "2023-04-01"


Pools
平台中Admin -> Pools
命令格式,
airflow pools set "POOLS名称" "数量" "备注"
airflow pools set "ck_alone" 1 "Pool for standalone CK tasks"

二、升级至中间版本(v1.10.15)

v1.10.15是中间版本, 先升级至这个版本

1.pip安装1.10.15版本

# 由于是conda安装的airflow, 所以要先进入这个环境
conda activate airflow

# https://raw.githubusercontent.com/apache/airflow/constraints-1.10.15/constraints-3.8.txt
AIRFLOW_VERSION=1.10.15
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL=https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt

pip install "apache-airflow==${AIRFLOW_VERSION}" --upgrade --constraint "${CONSTRAINT_URL}"

# 检查安装上了
pip list|grep airflow

2.升级数据库

airflow db upgrade

3.重新生成一个新key替换原配置(必须, 不然无法启动)

# 生成密钥
openssl rand -hex 30

cd $AIRFLOW_HOME
vi airflow.cfg

secret_key = temporary_key
替换为
secret_key = 37d148fcc8b7074ed8a3a7bxxxxxxx

4.重启服务

# supervisor也是conda环境下安装的
conda activate airflow

# worker和scheduler可以暂时不用重启
supervisorctl restart airflow-webserver

5.验证

UI界面 查看 About → Version 是V1.10.15版本

此时原先账号应该可以正常登录 → 如果不存在则需要新创建



三、升级至v1.20.4版本

1.升级前检查

1、安装 upgrade check 程序
pip install apache-airflow-upgrade-check

# 如果 airflow upgrade_check 报错
ModuleNotFoundError: No module named 'celery'

# 安装
pip install celery==5.4.0
pip install flower==1.2.0

2、创建文件
# upgrade-configuration.yaml
ignored_rules:
  - LegacyUIDeprecated
  - ConnTypeIsNotNullableRule
  - PodTemplateFileRule

3、执行检查, 如果发生Fail需要先解决掉再继续
airflow upgrade_check --config=./upgrade-configuration.yaml

2.准备库版本文件

# https://raw.githubusercontent.com/apache/airflow/constraints-2.4.1/constraints-3.8.txt

AIRFLOW_VERSION=2.4.1
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL=https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt

pip install "apache-airflow==${AIRFLOW_VERSION}" --upgrade --constraint "${CONSTRAINT_URL}"

# 如果有termcolor相关版本报错
pip install --ignore-installed termcolor

airflow db upgrade

# 查看新版本是否安装成功
pip list|grep airflow

3.修改配置文件 (v2.x特性)

cd $AIRFLOW_HOME

cp airflow.cfg{,_1.10.15.bak}
vim airflow.cfg
# 修改 或 新增下边的配置

[core]
# 关闭示例job
load_examples = False

4.重启Airflow生效

cp /etc/supervisor/config.d/airflow.ini{,_1.10.15.bak}
vi /etc/supervisor/config.d/airflow.ini

# 修改airflow worker的启动命令

[program:airflow-worker]
command=airflow worker
改为
command=airflow celery worker

重启

# 正常情况
supervisorctl update
supervisorctl stop airflow-webserver airflow-scheduler
supervisorctl start airflow-webserver airflow-scheduler

###  supervisor可能需要整个重启或reload下, 直接修改启动airflow worker命令的方式 无法正常启动

# 非正常情况
airflow webserver -p 18080 -D
airflow scheduler -D
airflow worker -D

5.新建用户 (v2.x特性)

conda activate airflow

# 新建用户
airflow users create \
    --username 用户名 \
    --firstname Admin \
    --lastname User \
    --role Admin \
    --email 用户@example.com \
    --password 密码

# 设置变量(根据实际情况)
airflow variables set "exec_date" "2023-04-01"

# 设置Pools(根据实际情况)
airflow pools set "arc" 8 "Pool for arc related tasks"
airflow pools set "default_pool" 10 "Default pool"

6.验证

1、测试是否可以正常登录、版本号是变更

2、查看服务启动日志

cd $AIRFLOW_HOME
tail -n 300 -f logs/nohup.out

3、删除升级过程中出现的表(可选, 在登录新版Airflow后 顶部会展示表名, 会默认保存7或14天)

4、验证Dag是否正常跑通



四、回滚

1、快照恢复机器 (不是云主机就恢复配置)

2、将现有的airflow数据库修改名称, 与airflow区别

3、新库由程序新建后、将部分数据导入新库 —— 未做回滚操作 所以这部分有些未知


参考:

Apache Airflow 1.10.9 升级到 2.0.2 版本实践

官网中有说v1-v2 的桥接版本是1.10.15
Upgrading from 1.10 to 2

这里还有升级v2的文档 看看就行
Upgrading to Apache Airflow 2

在Apple TV和Chromecast上观看本地内容。 无需等待,无需索引,只需拖放即可观看。 确实没有任何简单的事情。 下载气流 复杂而独特的视频处理管道... 气流的心脏。它以最低的CPU负载确保了最佳的视频质量。 怎么样?气流透明地重新混合了可以重新混合的视频,并对需要转码的视频进行了转码。如果您的计算机支持,则代码转换可以硬件加速。听起来太技术性了吗?这就是我们构建Airflow的原因。它隐藏了所有讨厌的细节,并且可以正常使用TM。 大字幕支持 字幕很重要。与大多数类似软件不同,Airflow无需对视频进行转码即可显示文本字幕。这样可以提高视频质量并降低CPU负载。支持DVD和Bluray字幕。 擦洗预览 寻求不一定是个谜。借助即时清理预览,您可以知道在内容加载之前将要降落的位置。使用触摸遥控器进行擦洗时,在Apple TV 4上也可用。 播放清单和最后位置 通过Airflow,您可以将文件整理到播放列表中,从而观看多个剧集变得尽可能无缝。 Airflow会记住每个文件的播放位置。它还监视当前文件夹,并为新文件自动选择下一个文件以进行不间断的播放。 环绕声 Chromecast和Apple TV全面支持5.1音频。 Airflow与Airplay镜像或Chrome Tab镜像相比如何 镜像不适用于视频播放,通常会使视频质量出现问题。帧速率不正确,存在伪影和口吃。有了Airflow,您将一无所获。它是专为视频播放而设计的,可提供最佳的视频质量。包括Chromecast Ultra和Apple TV 4K上的4K HDR HEVC流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值