一、先介绍一下 Airflow
Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控,而其web管理界面同样也可以方便的管控调度任务,并且对任务运行状态进行实时监控,方便了系统的运维和管理。
虽然Airflow的主要功能宗旨是数据工程和数据科学领域,但也可以根据需要将其扩展到业务流程审批等其他应用场景中。如:可以创建一个DAG(有向无环图),并将每个节点定义为审批步骤。当递交一个待审批的请求时,Airflow会按照您预先定义的顺序、时间间隔或其他条件来触发每个节点。该过程中,可以在Web UI上查看每个节点的状态,并发送电子邮件或其他通知来提醒相关用户进行审批或操作。另外,通过插件或自定义代码,还可以将Airflow与其他系统集成,从而实现更复杂的流程,例如自动化生成文件或自动化处理其它系统的数据。
二、主要功能包括以下方面:
1、DAG:通过python脚本描述任务依赖关系,形成有向无环图(DAG),将任务和依赖关系组织起来。您可以使用Airflow内置的Python库或者自己编写Python代码来创建DAG定义。
2、运行器(Executor):根据任务的类型和复杂程度,您可以选择不同的运行器来执行。Airflow提供了四种运行器:Sequential(顺序)、Local(本地)、Celery和Dask。这些运行器可以扩展至超过10万个任务,同时保持良好的性能表现。
3、任务调度:Airflow使用第三方插件-Beat Scheduler来安排和执行任务。该插件允许预定、执行、监控和重新执行DAG组成的工作流中的任务。
4、连接器(Connections):Airflow支持许多第三方连接器,可用于与各种数据源进行交互,例如AWS S3、Azure Blob Storage、Postgres、MySQL、Redis等等。您可以轻松地将连接器配置到Airflow系统中,并通过Python代码来操作外部系统,以便在Airflow中基于数据流建立一个工作流。
5、触发器(Triggers): Airflow包含一组强大的触发器机制,可以允许您设置依赖放宽的级别。例如,如果您希望等待另一个DAG完成或在特定条件下才启动任务,Airflow可以提供灵活的触发器工具。
6、任务状态监控:Airflow捕获运行时日志记录,并将其存储到关系数据库中。您可以使用命令行界面或Web UI来轻松查看日志和监控进度,以及重新启动失败的任务或重新安排错过的任务。
7、扩展功能:Airflow拥有丰富的API接口,您可以使用REST API进行管理、监视和调用任务。还有许多扩展插件可用于实现更高级的功能,例如Jupyter Notebooks支持等。
8、Airflow的主要功能是帮助数据工程师和数据科学家通过代码来组织复杂的数据管道,以及管理和监控这些管道中的任务和依赖项
三、安装步骤:
1、更新包列表
sudo apt update
2、更新已安装的包
sudo apt upgrade
3、python设定
安装python3.8
sudo apt-get install python3.8
sudo apt-get install python3-pip python3-venv
删除原来python依赖
sudo rm /usr/bin/python3
更换默认python3 的版本为3.8
sudo ln -s /usr/bin/python3.8 /usr/bin/python3
4、安装 python 虚拟环境
mkdir /opt/airflow_venv
sudo chown -R ubuntu.ubuntu /opt/airflow_venv
python3 -m venv airflow_venv
如果一直无法创建虚拟环境需要安装python3.8-venv
sudo apt-get install python3.8-venv
激活虚拟环境
source /opt/airflow_venv/bin/activate
5、为了确保Airflow能够找到必要的文件和依赖项,请运行以下命令以设置AIRFLOW_HOME环境变量:
export AIRFLOW_HOME=/opt/airflow
同时最好能将其添加到 ~/.bashrc 文件中,以便永久保存这些设置。
sudo pico ~/.bashrc
在空行或者末尾添加
export AIRFLOW_HOME=/opt/airflow
然后保存退出
确认环境变量是否已成功设置。需要关闭当前窗口再打开运行以下命令:
echo $AIRFLOW_HOME
6、安装airflow
pip3 install apache-airflow -i https://pypi.tuna.tsinghua.edu.cn/simple
通过pip安装的可以,通过pip show apache-airflow来查看安装路径
7、初始化数据库【如果不更换数据库,就可以直接初始化】
airflow db init
8、官方建议更换数据库,现改为mysql
8.1、安装
sudo apt-get update #更新包
sudo apt install mysql-server-5.7
查看mysql的版本:mysql -V
8.2、设置mysql密码
mysql -u root -p
刚安装后是没有密码的,可直接回车进入
CREATE USER 'airflow'@'%' IDENTIFIED BY 'qw****21';
需要对用户进行授权
GRANT all ON *.* TO 'airflow'@'%';
退出sql,使密码生效
sudo mysql_secure_installation
同时为了能远程访问,需要修改
打开MySQL配置文件my.cnf,并找到bind-address选项。这通常位于/etc/mysql/mysql.conf.d/mysqld.cnf文件中
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
8.3、重启mysql
sudo service mysql restart
8.4、安装mysql驱动
sudo apt install -y mysql-client
sudo apt-get install libmysqlclient-dev
sudo apt install libssl-dev
sudo apt install libcrypto -dev
sudo apt install libmysqlclient-dev
pip install mysqlclient
一直报#include "Python.h" ^~~~~~~~~~ compilation terminated. error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1,发现安装了sudo apt-get install python3-dev,安装了python3.8-dev才能解决
sudo apt-get install python3.8-dev
pip3 install 'apache-airflow[mysql]'
修改airflow的数据连接
pico /opt/airflow/airflow.cfg
找到以下位置,把原来的sql_alchemy_conn注释,然后添加新连接
[database]
#sql_alchemy_conn = sqlite:////opt/airflow/airflow.db
sql_alchemy_conn=mysql://username:mypassword@localhost/airflow_db
8.5、初始化数据库
airflow db init
8.6、创建用户
airflow users create –username 账号 –firstname 姓 –lastname 名字 –role Admin –email asd@xxx.com
9、启动airflow
source /opt/airflow_venv/bin/activate
airflow webserver -p 8080 -D
10、启动调度程序
airflow scheduler -D
加参数D,是守护进程运行,不占用窗体
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。