任務(wù)調(diào)度神器airflow怎么用呢

本篇文章給大家分享的是有關(guān)任務(wù)調(diào)度神器airflow怎么用呢,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)是專業(yè)的高青網(wǎng)站建設(shè)公司,高青接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行高青網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!


airflow 是 apache下孵化項目,是純 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)勢:

1. 靈活易用,airflow 本身是 Python 編寫的,且工作流的定義也是 Python 編寫,有了 Python 膠水的特性,沒有什么任務(wù)是調(diào)度不了的,有了開源的代碼,沒有什么問題是無法解決的,你完全可以修改源碼來滿足個性化的需求,而且更重要的是代碼都是   —human-readable 。
2. 功能強大,自帶的 Operators 都有15+,也就是說本身已經(jīng)支持 15 種不同類型的作業(yè),而且還是可自定義 Operators,什么 shell 腳本,python,MySQL,oracle,hive等等,無論不傳統(tǒng)數(shù)據(jù)庫平臺還是大數(shù)據(jù)平臺,統(tǒng)統(tǒng)不在話下,對官方提供的不滿足,完全可以自己編寫 Operators。
3. 優(yōu)雅,作業(yè)的定義很簡單明了, 基于 jinja 模板引擎很容易做到腳本命令參數(shù)化,web 界面更是也非常   —human-readable ,誰用誰知道。
4. 極易擴展,提供各種基類供擴展, 還有多種執(zhí)行器可供選擇,其中 CeleryExcutor 使用了消息隊列來編排多個工作節(jié)點(worker), 可分布式部署多個 worker ,airflow 可以做到無限擴展。

5. 豐富的命令工具,你甚至都不用打開瀏覽器,直接在終端敲命令就能完成測試,部署,運行,清理,重跑,追數(shù)等任務(wù),想想那些靠著在界面上不知道點擊多少次才能部署一個小小的作業(yè)時,真覺得 airflow 真的太友好了。

airflow 是免費的,我們可以將一些常做的巡檢任務(wù),定時腳本(如 crontab ),ETL處理,監(jiān)控等任務(wù)放在 airflow 上集中管理,甚至都不用再寫監(jiān)控腳本,作業(yè)出錯會自動發(fā)送日志到指定人員郵箱,低成本高效率地解決生產(chǎn)問題。但是由于中文文檔太少,大多不夠全全,因此想快速上手并不十分容易。首先要具備一定的 Python 知識,反復(fù)閱讀官方文檔,理解調(diào)度原理。本系列分享由淺入深,逐步細(xì)化,嘗試為你揭開 airflow 的面紗。

組成部分

從一個使用者的角度來看,調(diào)度工作都有以下功能:

1. 系統(tǒng)配置($AIRFLOW_HOME/airflow.cfg)
2. 作業(yè)管理($AIRFLOW_HOME/dags/xxxx.py)
3. 運行監(jiān)控(webserver)
4. 報警(郵件或短信)
5. 日志查看(webserver 或 $AIRFLOW_HOME/logs/  *)
6. 跑批耗時分析(webserver)

7. 后臺調(diào)度服務(wù)(scheduler)

除了短信需要自己實現(xiàn),其他功能 airflow 都有,而且在 airflow 的 webserver 上我們可以直接配置數(shù)據(jù)庫連接來寫 sql 查詢,做更加靈活的統(tǒng)計分析。

除了以上的組成部分,我們還需要知道一些概念

一些概念:

DAG

Linux 的 crontab 和 windows 的任務(wù)計劃,他們可以配置定時任務(wù)或間隔任務(wù),但不能配置作業(yè)之前的依賴關(guān)系。airflow 中 DAG 就是管理作業(yè)依賴關(guān)系的。DAG 的英文 directed acyclic graphs 即有向無環(huán)圖,下圖 1 便是一個簡單的 DAG

任務(wù)調(diào)度神器airflow怎么用呢

圖 1:DAG 示例

在 airflow 中這種 DAG 是通過編寫 Python 代碼來實現(xiàn)的,DAG 的編寫非常簡單,官方提供了很多的例子,在安裝完成后,啟動 webserver 即可看到 DAG 樣例的源碼(其實定義了 DAG 對象的 python 程序),稍做修改即可成為自己的 DAG 。上圖 1 中 DAG 中的依賴關(guān)系通過下述三行代碼即可完成:

任務(wù)調(diào)度神器airflow怎么用呢

是不是非常簡潔,并且是 —human-readable

操作符-Operators

DAG 定義一個作業(yè)流,Operators 則定義了實際需要執(zhí)行的作業(yè)。airflow 提供了許多 Operators 來指定我們需要執(zhí)行的作業(yè):

  • BashOperator - 執(zhí)行 bash 命令或腳本。
  • SSHOperator - 執(zhí)行遠程 bash 命令或腳本(原理同 paramiko 模塊)。
  • PythonOperator - 執(zhí)行 Python 函數(shù)。
  • EmailOperator - 發(fā)送 Email。
  • HTTPOperator - 發(fā)送一個 HTTP 請求。
  • MySqlOperator, SqliteOperator, PostgresOperator, MsSqlOperator, OracleOperator, JdbcOperator, 等. - 執(zhí)行 SQL 任務(wù)。
  • DockerOperator, HiveOperator, S3FileTransferOperator, PrestoToMysqlOperator, SlackOperator 你懂得。

    除了以上這些 Operators 還可以方便的自定義 Operators 滿足個性化的任務(wù)需求。

    后續(xù)會介紹如何使用這些 Operators 敬請關(guān)注。

時區(qū)-timezone

airflow 1.9 之前的版本使用本地時區(qū)來定義任務(wù)開始日期,scheduler_interval 中 crontab 表達式中的定時也是依據(jù)本地時區(qū)為準(zhǔn),但 airflow 1.9 及后續(xù)新版本將默認(rèn)使用 UTC 時區(qū)來確保 airflow 調(diào)度的獨立性,以避免不同機器使用不同時區(qū)導(dǎo)致運行錯亂。如果調(diào)度的任務(wù)集中在一個時區(qū)上,或不同機器,但使用同一時區(qū)時,需要對任務(wù)的開始時間及 cron 表達式進行時區(qū)轉(zhuǎn)換,或直接使用本地時區(qū)。目前 1.9 的穩(wěn)定版本還不支持時區(qū)配置,后續(xù)版本會加入時區(qū)配置,以滿足使用本地時區(qū)的需求。

web服務(wù)器-webserver

webserver 是 airflow 的界面展示,可顯示 DAG 視圖,控制作業(yè)的啟停,清除作業(yè)狀態(tài)重跑,數(shù)據(jù)統(tǒng)計,查看日志,管理用戶及數(shù)據(jù)連接等。不運行 webserver 并不影響 airflow 作業(yè)的調(diào)度。

調(diào)度器-schduler

調(diào)度器 schduler 負(fù)責(zé)讀取 DAG 文件,計算其調(diào)度時間,當(dāng)滿足觸發(fā)條件時則開啟一個執(zhí)行器的實例來運行相應(yīng)的作業(yè),必須持續(xù)運行,不運行則作業(yè)不會跑批。

工作節(jié)點-worker

當(dāng)執(zhí)行器為 CeleryExecutor 時,需要開啟一個 worker。

執(zhí)行器-Executor

執(zhí)行器有 SequentialExecutor, LocalExecutor, CeleryExecutor

  1. SequentialExecutor 為順序執(zhí)行器,默認(rèn)使用 sqlite 作為知識庫,由于 sqlite 數(shù)據(jù)庫的原因,任務(wù)之間不支持并發(fā)執(zhí)行,常用于測試環(huán)境,無需要額外配置。
  2. LocalExecutor 為本執(zhí)行器,不能使用 sqlite 作為知識庫,可以使用 mysql,postgress,db2,oracle 等各種主流數(shù)據(jù)庫,任務(wù)之間支持并發(fā)執(zhí)行,常用于生產(chǎn)環(huán)境,需要配置數(shù)據(jù)庫連接 url。
  3. CeleryExecutor 為 Celery 執(zhí)行器,需要安裝 Celery ,Celery 是基于消息隊列的分布式異步任務(wù)調(diào)度工具。需要額外啟動工作節(jié)點-worker。使用 CeleryExecutor 可將作業(yè)運行在遠程節(jié)點上。

以一張思維導(dǎo)圖總結(jié)今天的內(nèi)容:

任務(wù)調(diào)度神器airflow怎么用呢

以上就是任務(wù)調(diào)度神器airflow怎么用呢,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:任務(wù)調(diào)度神器airflow怎么用呢
路徑分享:http://www.muchs.cn/article0/jsocoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、建站公司網(wǎng)站排名、云服務(wù)器、定制開發(fā)、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)