一、先介紹一下 Airflow
Airflow是一個(gè)可編程,調(diào)度和監(jiān)控的工作流平臺(tái),基于有向無環(huán)圖(DAG),airflow可以定義一組有依賴的任務(wù),按照依賴依次執(zhí)行。airflow提供了豐富的命令行工具用于系統(tǒng)管控,而其web管理界面同樣也可以方便的管控調(diào)度任務(wù),并且對(duì)任務(wù)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,方便了系統(tǒng)的運(yùn)維和管理。
雖然Airflow的主要功能宗旨是數(shù)據(jù)工程和數(shù)據(jù)科學(xué)領(lǐng)域,但也可以根據(jù)需要將其擴(kuò)展到業(yè)務(wù)流程審批等其他應(yīng)用場(chǎng)景中。如:可以創(chuàng)建一個(gè)DAG(有向無環(huán)圖),并將每個(gè)節(jié)點(diǎn)定義為審批步驟。當(dāng)遞交一個(gè)待審批的請(qǐng)求時(shí),Airflow會(huì)按照您預(yù)先定義的順序、時(shí)間間隔或其他條件來觸發(fā)每個(gè)節(jié)點(diǎn)。該過程中,可以在Web UI上查看每個(gè)節(jié)點(diǎn)的狀態(tài),并發(fā)送電子郵件或其他通知來提醒相關(guān)用戶進(jìn)行審批或操作。另外,通過插件或自定義代碼,還可以將Airflow與其他系統(tǒng)集成,從而實(shí)現(xiàn)更復(fù)雜的流程,例如自動(dòng)化生成文件或自動(dòng)化處理其它系統(tǒng)的數(shù)據(jù)。
二、主要功能包括以下方面:
1、DAG:通過python腳本描述任務(wù)依賴關(guān)系,形成有向無環(huán)圖(DAG),將任務(wù)和依賴關(guān)系組織起來。您可以使用Airflow內(nèi)置的Python庫或者自己編寫Python代碼來創(chuàng)建DAG定義。
2、運(yùn)行器(Executor):根據(jù)任務(wù)的類型和復(fù)雜程度,您可以選擇不同的運(yùn)行器來執(zhí)行。Airflow提供了四種運(yùn)行器:Sequential(順序)、Local(本地)、Celery和Dask。這些運(yùn)行器可以擴(kuò)展至超過10萬個(gè)任務(wù),同時(shí)保持良好的性能表現(xiàn)。
3、任務(wù)調(diào)度:Airflow使用第三方插件-Beat Scheduler來安排和執(zhí)行任務(wù)。該插件允許預(yù)定、執(zhí)行、監(jiān)控和重新執(zhí)行DAG組成的工作流中的任務(wù)。
4、連接器(Connections):Airflow支持許多第三方連接器,可用于與各種數(shù)據(jù)源進(jìn)行交互,例如AWS S3、Azure Blob Storage、Postgres、MySQL、Redis等等。您可以輕松地將連接器配置到Airflow系統(tǒng)中,并通過Python代碼來操作外部系統(tǒng),以便在Airflow中基于數(shù)據(jù)流建立一個(gè)工作流。
5、觸發(fā)器(Triggers): Airflow包含一組強(qiáng)大的觸發(fā)器機(jī)制,可以允許您設(shè)置依賴放寬的級(jí)別。例如,如果您希望等待另一個(gè)DAG完成或在特定條件下才啟動(dòng)任務(wù),Airflow可以提供靈活的觸發(fā)器工具。
6、任務(wù)狀態(tài)監(jiān)控:Airflow捕獲運(yùn)行時(shí)日志記錄,并將其存儲(chǔ)到關(guān)系數(shù)據(jù)庫中。您可以使用命令行界面或Web UI來輕松查看日志和監(jiān)控進(jìn)度,以及重新啟動(dòng)失敗的任務(wù)或重新安排錯(cuò)過的任務(wù)。
7、擴(kuò)展功能:Airflow擁有豐富的API接口,您可以使用REST API進(jìn)行管理、監(jiān)視和調(diào)用任務(wù)。還有許多擴(kuò)展插件可用于實(shí)現(xiàn)更高級(jí)的功能,例如Jupyter Notebooks支持等。
8、Airflow的主要功能是幫助數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家通過代碼來組織復(fù)雜的數(shù)據(jù)管道,以及管理和監(jiān)控這些管道中的任務(wù)和依賴項(xiàng)
三、安裝步驟:
1、更新包列表
sudo apt update
2、更新已安裝的包
sudo apt upgrade
3、python設(shè)定
安裝python3.8
sudo apt-get install python3.8
sudo apt-get install python3-pip python3-venv
刪除原來python依賴
sudo rm /usr/bin/python3
更換默認(rèn)python3 的版本為3.8
sudo ln -s /usr/bin/python3.8 /usr/bin/python3
4、安裝 python 虛擬環(huán)境
mkdir /opt/airflow_venv
sudo chown -R ubuntu.ubuntu /opt/airflow_venv
python3 -m venv airflow_venv
如果一直無法創(chuàng)建虛擬環(huán)境需要安裝python3.8-venv
sudo apt-get install python3.8-venv
激活虛擬環(huán)境
source /opt/airflow_venv/bin/activate
5、為了確保Airflow能夠找到必要的文件和依賴項(xiàng),請(qǐng)運(yùn)行以下命令以設(shè)置AIRFLOW_HOME環(huán)境變量:
export AIRFLOW_HOME=/opt/airflow
同時(shí)最好能將其添加到 ~/.bashrc 文件中,以便永久保存這些設(shè)置。
sudo pico ~/.bashrc
在空行或者末尾添加
export AIRFLOW_HOME=/opt/airflow
然后保存退出
確認(rèn)環(huán)境變量是否已成功設(shè)置。需要關(guān)閉當(dāng)前窗口再打開運(yùn)行以下命令:
echo $AIRFLOW_HOME
6、安裝airflow
pip3 install apache-airflow -i https://pypi.tuna.tsinghua.edu.cn/simple
通過pip安裝的可以,通過pip show apache-airflow來查看安裝路徑
7、初始化數(shù)據(jù)庫【如果不更換數(shù)據(jù)庫,就可以直接初始化】
airflow db init
8、官方建議更換數(shù)據(jù)庫,現(xiàn)改為mysql
8.1、安裝
sudo apt-get update #更新包
sudo apt install mysql-server-5.7
查看mysql的版本:mysql -V
8.2、設(shè)置mysql密碼
mysql -u root -p
剛安裝后是沒有密碼的,可直接回車進(jìn)入
CREATE USER 'airflow'@'%' IDENTIFIED BY 'qw****21';
需要對(duì)用戶進(jìn)行授權(quán)
GRANT all ON *.* TO 'airflow'@'%';
退出sql,使密碼生效
sudo mysql_secure_installation
同時(shí)為了能遠(yuǎn)程訪問,需要修改
打開MySQL配置文件my.cnf,并找到bind-address選項(xiàng)。這通常位于/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驅(qū)動(dòng)
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
一直報(bào)#include "Python.h" ^~~~~~~~~~ compilation terminated. error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1,發(fā)現(xiàn)安裝了sudo apt-get install python3-dev,安裝了python3.8-dev才能解決
sudo apt-get install python3.8-dev
pip3 install 'apache-airflow[mysql]'
修改airflow的數(shù)據(jù)連接
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、初始化數(shù)據(jù)庫
airflow db init
8.6、創(chuàng)建用戶
airflow users create –username 賬號(hào) –firstname 姓 –lastname 名字 –role Admin –email asd@xxx.com
9、啟動(dòng)airflow
source /opt/airflow_venv/bin/activate
airflow webserver -p 8080 -D
10、啟動(dòng)調(diào)度程序
airflow scheduler -D
加參數(shù)D,是守護(hù)進(jìn)程運(yùn)行,不占用窗體
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。