【Airflow】工作流自動化和調度系統
文章目錄
一、Airflow的誕生
二、基于CeleryExecutor方式的系統架構
三、Airflow的組成成分
四、安裝
五、基本命令
Reference
一、Airflow的誕生
2014年,Airbnb創造了一套工作流調度系統:Airflow。Airflow是靈活可擴展的工作流自動化和調度系統 。2019年成為Apache的頂級項目。它可以讓程序員通過編程實現:編寫、調度、監控工作流,主要針對有大量數據進行傳遞的場景,不適合解決流式任務(如spark streaming和Flink)。
通過python代碼,把任務組織成有向無環圖DAG,
通過【依賴關系】在一組服務器上調度任務。
Airflow有啥用:
監控自動化工作的情況(通過web UI和各個worker上記錄的執行歷史)
自動處理并傳輸數據
為機器學習或推薦系統提供一個數據管道和使用框架
二、基于CeleryExecutor方式的系統架構
使用celery方式的系統架構圖(官方推薦使用這種方式,同時支持mesos方式部署)。turing為外部系統,GDags服務幫助拼接成dag,可以忽略。
master節點webui管理dags、日志等信息。scheduler負責調度,只支持單節點,多節點啟動scheduler可能會掛掉
worker負責執行具體dag中的task。這樣不同的task可以在不同的環境中執行。
turing為外部系統
GDags服務幫助拼接成dag
master節點webui管理dags、日志等信息
scheduler負責調度,只支持單節點
worker負責執行具體dag中的task, worker支持多節點
三、Airflow的組成成分
Worker:用來處理和執行整個工作流的各個節點的工作任務的東西。
Scheduler:只有干活的worker是不夠的,Airflow需要有一個大腦,去檢查哪些任務執行了,哪些任務沒有執行,以及應該在什么時間執行任務。
WebServer:Airflow是可以用視窗工具(UI)來完成工作流修改,參數修改這些任務的。這個視窗工具就是一個web頁面(簡單理解就是在瀏覽器里面打開的網頁)。這個WebServer啟動之后,我們就可以更方便的去修改和檢測我們的工作流了。
中止、恢復、觸發任務。
監控正在運行的任務,斷點續跑任務。
執行 ad-hoc 命令或 SQL 語句來查詢任務的狀態,日志等詳細信息。
配置連接,包括不限于數據庫、ssh 的連接等。
四、安裝
(1)安裝包
yum install python-devel mysql-devel -y yum install python-devel yum install python3-devel yum install mysql-devel pip3 install mysqlclient pip3 install apache-airflow pip3 install apache-airflow[mysql]
1
2
3
4
5
6
7
(2)修改配置文件
# 初始化原始庫 執行完以下命令后會在當前家用戶目錄下生成airflow目錄 airflow db init # vim airflow.cfg 具體要修改的內容如下 [core] executor=LocalExecutor sql_alchemy_conn = mysql://user:password@IP:3306/airflow [smtp] smtp_host = mail.ndpmedia.com smtp_starttls = True smtp_ssl = False smtp_user = user smtp_password = pass smtp_port = 25 smtp_timeout = 30 smtp_mail_from =與user相同 smtp_retry_limit = 5 [webserver] security = Flask AppBuilder secure_mode = True rbac=True
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(3)創建用戶
airflow users create --username admin --firstname admin --lastname admin --role Admin --email example@XX.com airflow webserver 啟動web服務 airflow scheduler 啟動調度程序
1
2
3
五、基本命令
$ airflow webserver -D 守護進程運行webserver $ airflow scheduler -D 守護進程運行調度器 $ airflow worker -D 守護進程運行調度器 $ airflow worker -c 1 -D 守護進程運行celery worker并指定任務并發數為1 $ airflow pause dag_id 暫停任務 $ airflow unpause dag_id 取消暫停,等同于在管理界面打開off按鈕 $ airflow list_tasks dag_id 查看task列表 $ airflow clear dag_id 清空任務實例 $ airflow trigger_dag dag_id -r RUN_ID -e EXEC_DATE 運行整個dag文件 $ airflow run dag_id task_id execution_date 運行task
1
2
3
4
5
6
7
8
9
10
Reference
[1] airflow官方文檔:https://github.com/apache/airflow
[2] 大數據基礎airflow:https://www.cnblogs.com/barneywill/p/10268501.html
[3] airflow安裝:https://blog.csdn.net/u011192458/article/details/106321676
[4] https://blog.51cto.com/xiaoqiangjs/2462914
MySQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。