第1章概述
1.1编写目的
暂无
1.2业务背景
暂无
第2章组件介绍
2.1组件介绍与架构说明
airflow 介绍 airflow是一款开源的,分布式任务调度框架,它将一个具有上下级依赖关系的工作流,组装成一个有向无环图,其作为整个中台的作业调度中心,为数据批处理提供基础服务。
2.2逻辑部署拓扑
airflow的运行流程从逻辑上可为分为两个节点,调度器Scheduler 和执行器:Executor,调度器是一种使用 DAG 定义结合元数据中的任务状态来决定哪些任务需要被执行以及任务执行优先级的过程。调度器通常作为服务运行。执行器是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。
2.3物理部署拓扑
Scheduler 和Executor均部署在node4上
2.4依赖环境
硬件:Phytium ARM CPU,银河麒麟v10 内核版本4.19.90-17 arm64 桌面版
python依赖:python3.8
组件依赖:无
2.5界面效果
2.5.1安装完成后的运行效果
2.5.2运行日志
运行日志在~/airflow/logs目录下,可使用cat命令进行查看
第3章部署步骤
3.1安装python3.8.6
3.1.1编译安装python3.8.6
解压python-3.8.6.tgz,将python3.8.6安装至/usr/local/python3目录
进入Python-3.8.6/Modules目录,编辑Setup文件,将以下5行注释去掉,如下图
建立目录
mkdir /usr/local/python3
进入Python-3.8.6目录,执行编译安装
cd Python-3.8.6
./configure --prefix=/usr/local/python3
make && make install
3.1.2建立python3和pip3的软链
删除原有的链接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
创建python3的软链
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
创建pip3 的软链
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
3.1.3添加环境变量
编辑/etc/profile文件
vi /etc/profile
加入以下内容
环境变量,
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3/lib
配置airflow需要的环境变量,
export AIRFLOW_HOME=~/airflow
export AIRFLOW_GPL_UNIDECODE=yes
添加python3的目录,否则无法识别airflow命令
export PATH=$PATH:/usr/local/python3/bin
保存退出,加载环境变量
source /etc/profile
测试pip3和python3命令,出现如下版本号则安装成功
[root@node4 python+pip] python3 -V
Python 3.8.6
[root@node4 python+pip] pip3 -V
pip 20.2.1 from /usr/local/python3/lib/python3.8/site-packages/pip (python 3.8)
3.1.4升级pip3的版本
进入安装包的python+pip目录,执行以下语句:
进入安装包python+pip目录
cd python+pip
安装pip新版本
pip3 install pip-21.3.1-py3-none-any
再次查看版本,已更新为21.3.1
pip3 -V
3.2安装airflow
1.123.2.1安装airflow
进入安装包airflow_1.10.9_all,执行安装
[重要] 安装setuptools 49.2.1,
pip3 install setuptools-49.2.1-py3-none-any.whl
[重要] 安装numpy 1.18.1,
自动安装的版本为1.22.2,与本操作系统不兼容
解压unzip numpy-1.18.1.zip,进入解压目录进行安装
python3 setup.py install
安装airflow
执行安装
pip3 install apache-airflow --no-index -f ./
安装时间会比较长,如出现版本不兼容的报错,可忽略,如出现报错,参考以下方法解决:
报错:
安装pendulum-1.4.4.tar.gz时报
ERROR: Could not find a version that satisfies the requirement setuptools>=60.9.3 (from versions: none)
ERROR: No matching distribution found for setuptools>=49.2.1
解决方法:
执行以下命令后,重新执行安装
解压 pendulum-1.4.4.tar.gz,进入解压的目录,执行
python3 setup.py install 安装
报错:
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('pytest-runner')
解决方法:
执行以下命令后,重新执行安装
pip3 install pytest_runner-6.0.0-py3-none-any.whl
报错:
ModuleNotFoundError: No module named '_ssl'
解决方法:
依次按顺序执行以下命令后,重新执行安装
rpm -ivh e2fsprogs-devel-1.45.3-4.p01.ky10.aarch64.rpm
rpm -ivh keyutils-libs-devel-1.5.10-11.ky10.aarch64.rpm
rpm -ivh libverto-devel-0.3.1-2.ky10.aarch64.rpm
rpm -ivh krb5-devel-1.17-9.ky10.aarch64.rpm
rpm -ivh openssl-devel-1.1.1d-9.ky10.aarch64.rpm
注:如还出现其他类似的缺少包的提示,都可使用pip3 install进行安装,所有依赖的包都在airflow_1.10.9目录里,最终出现Successfully installed,表示安装成功。
3.2.2初始化数据库
初始化数据库
airflow initdb
1.2.3.3.13.23.2.3启动airflow
启动airflow web
指定端口
airflow webserver -p xxx
不指定端口,默认为8080,启动成功后,通过http://x.x.x.x:8080访问
airflow webserver
使用以下命令可使airflow不随窗口关闭而关闭,并将日志输出(追加)到指定目录
nohup airflow webserver >> /airflow.log &
启动airflow scheduler,必须启动scheduler,否则web界面不更新新的dag等内容,
airflow scheduler
3.2.4更改数据库为mysql
Airflow默认数据库为SQLite,如需更改数据库为mysql,请修改$AIRFLOW_HOME/airflow.cfg文件,默认在~/airflow/airflow.cfg,加入以下内容
加入以下语句,格式如下:
mysq://[db_username]:[db_password]@[db_host]:[db_port]/[db_name]
例:
sql_alchemy_conn = mysql://root:root@localhost:3306/airflow charset=utf8
注:配置完后,重新使用airflow initdb初始化数据库,请提前准备好数据库及设置访问权限
如出现:ModuleNotFoundError: No module named 'MySQLdb',请在安装目录执行pip3 install mysqlclient-1.3.14.tar.gz 安装mysqlclient,
如出现:OSError: mysql_config not found,请在安装目录执行rpm -ivh mysql-community-devel-8.0.28-1.el8.aarch64.rpm 安装 mysql-devel
3.2.5中文化
进入airflow_1.10.9_all目录,安装Flask-BabelEx和PyMySQL
pip3 install Flask_BabelEx-0.9.4-py3-none-any.whl
pip3 install PyMySQL-0.9.3-py2.py3-none-any.whl
修改配置文件,~/airflow/airflow.cfg
修改时区
default_timezone = Asia/Shanghai
不加载示例
load_examples = False
将汉化包里的文件替换/usr/local/python3/lib/python3.8/site-packages/airflow目录里的文件,再重新始初化数据库,重新启动服务
3.2.6运行报错配置
为了捕获airflow运行dag时的报错信息,需要配置报错信息接收的数据库连接,修改/usr/local/python3/lib/python3.8/site-packages/airflow/www/utils.py 第528行,按实际情况修改数据库连接字符串
1第4章常见操作
4.1启动命令
启动web界面:airflow webserver
启动scheduler:airflow scheduler
4.2关闭命令
使用ps -ef |grep airflow找出进程,再通过kill命令关闭
4.3日志查看命令
运行日志在~/airflow/logs目录下,可使用cat命令进行查看
4.4健康检查方法
通过ps -ef | grep 查看运行进程,或通过web界面进行访问