您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)任務(wù)調(diào)度神器airflow怎么用呢,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
airflow 是 apache下孵化項(xiàng)目,是純 Python 編寫的一款非常優(yōu)雅的開源調(diào)度平臺。github 上有 8971 個星(貓注:現(xiàn)在是 15.4K),是非常受歡迎的調(diào)度工具。airflow 使用 DAG (有向無環(huán)圖) 來定義工作流,配置作業(yè)依賴關(guān)系非常方便,豪不夸張地說:方便程度簡直甩其他任務(wù)調(diào)度工具一條街。
airflow 有著以下天然優(yōu)勢:
5. 豐富的命令工具,你甚至都不用打開瀏覽器,直接在終端敲命令就能完成測試,部署,運(yùn)行,清理,重跑,追數(shù)等任務(wù),想想那些靠著在界面上不知道點(diǎn)擊多少次才能部署一個小小的作業(yè)時,真覺得 airflow 真的太友好了。
airflow 是免費(fèi)的,我們可以將一些常做的巡檢任務(wù),定時腳本(如 crontab ),ETL處理,監(jiān)控等任務(wù)放在 airflow 上集中管理,甚至都不用再寫監(jiān)控腳本,作業(yè)出錯會自動發(fā)送日志到指定人員郵箱,低成本高效率地解決生產(chǎn)問題。但是由于中文文檔太少,大多不夠全全,因此想快速上手并不十分容易。首先要具備一定的 Python 知識,反復(fù)閱讀官方文檔,理解調(diào)度原理。本系列分享由淺入深,逐步細(xì)化,嘗試為你揭開 airflow 的面紗。
從一個使用者的角度來看,調(diào)度工作都有以下功能:
7. 后臺調(diào)度服務(wù)(scheduler)
除了短信需要自己實(shí)現(xiàn),其他功能 airflow 都有,而且在 airflow 的 webserver 上我們可以直接配置數(shù)據(jù)庫連接來寫 sql 查詢,做更加靈活的統(tǒng)計(jì)分析。
除了以上的組成部分,我們還需要知道一些概念
Linux 的 crontab 和 windows 的任務(wù)計(jì)劃,他們可以配置定時任務(wù)或間隔任務(wù),但不能配置作業(yè)之前的依賴關(guān)系。airflow 中 DAG 就是管理作業(yè)依賴關(guān)系的。DAG 的英文 directed acyclic graphs 即有向無環(huán)圖,下圖 1 便是一個簡單的 DAG
圖 1:DAG 示例
在 airflow 中這種 DAG 是通過編寫 Python 代碼來實(shí)現(xiàn)的,DAG 的編寫非常簡單,官方提供了很多的例子,在安裝完成后,啟動 webserver 即可看到 DAG 樣例的源碼(其實(shí)定義了 DAG 對象的 python 程序),稍做修改即可成為自己的 DAG 。上圖 1 中 DAG 中的依賴關(guān)系通過下述三行代碼即可完成:
是不是非常簡潔,并且是 —human-readable。
DAG 定義一個作業(yè)流,Operators 則定義了實(shí)際需要執(zhí)行的作業(yè)。airflow 提供了許多 Operators 來指定我們需要執(zhí)行的作業(yè):
后續(xù)會介紹如何使用這些 Operators 敬請關(guān)注。
airflow 1.9 之前的版本使用本地時區(qū)來定義任務(wù)開始日期,scheduler_interval 中 crontab 表達(dá)式中的定時也是依據(jù)本地時區(qū)為準(zhǔn),但 airflow 1.9 及后續(xù)新版本將默認(rèn)使用 UTC 時區(qū)來確保 airflow 調(diào)度的獨(dú)立性,以避免不同機(jī)器使用不同時區(qū)導(dǎo)致運(yùn)行錯亂。如果調(diào)度的任務(wù)集中在一個時區(qū)上,或不同機(jī)器,但使用同一時區(qū)時,需要對任務(wù)的開始時間及 cron 表達(dá)式進(jìn)行時區(qū)轉(zhuǎn)換,或直接使用本地時區(qū)。目前 1.9 的穩(wěn)定版本還不支持時區(qū)配置,后續(xù)版本會加入時區(qū)配置,以滿足使用本地時區(qū)的需求。
webserver 是 airflow 的界面展示,可顯示 DAG 視圖,控制作業(yè)的啟停,清除作業(yè)狀態(tài)重跑,數(shù)據(jù)統(tǒng)計(jì),查看日志,管理用戶及數(shù)據(jù)連接等。不運(yùn)行 webserver 并不影響 airflow 作業(yè)的調(diào)度。
調(diào)度器 schduler 負(fù)責(zé)讀取 DAG 文件,計(jì)算其調(diào)度時間,當(dāng)滿足觸發(fā)條件時則開啟一個執(zhí)行器的實(shí)例來運(yùn)行相應(yīng)的作業(yè),必須持續(xù)運(yùn)行,不運(yùn)行則作業(yè)不會跑批。
當(dāng)執(zhí)行器為 CeleryExecutor 時,需要開啟一個 worker。
執(zhí)行器有 SequentialExecutor, LocalExecutor, CeleryExecutor
CeleryExecutor 為 Celery 執(zhí)行器,需要安裝 Celery ,Celery 是基于消息隊(duì)列的分布式異步任務(wù)調(diào)度工具。需要額外啟動工作節(jié)點(diǎn)-worker。使用 CeleryExecutor 可將作業(yè)運(yùn)行在遠(yuǎn)程節(jié)點(diǎn)上。
以一張思維導(dǎo)圖總結(jié)今天的內(nèi)容:
以上就是任務(wù)調(diào)度神器airflow怎么用呢,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。