
Apache DolphinScheduler和Apache Airflow任務(wù)調(diào)度系統(tǒng)對比
目前世界上最流行的兩款任務(wù)調(diào)度系統(tǒng)是 Apache DolphinScheduler 和 Apache Airflow。什么是任務(wù)調(diào)度系統(tǒng)呢?它類似于平時工作與生活中使用的日程表,可以讓某一類型的任務(wù)在某一特定時刻執(zhí)行,并且在這個任務(wù)執(zhí)行完后,執(zhí)行下一個類似的任務(wù)。以大部分人都要經(jīng)歷的上班為例,按照流程執(zhí)行的一系列任務(wù)就是一個簡單的任務(wù)調(diào)度系統(tǒng),只不過這個系統(tǒng)是人本身而已。Apache DolphinScheduler 和 Apache Airflow 只不過是將上班這個流程里的“聽音樂”、“整理著裝”這些任務(wù)變成了數(shù)據(jù)處理領(lǐng)域里面常用的 Sql、Spark、Shell 等任務(wù),這個流程有一個官方名稱叫做:DAG 工作流。
Apache DolphinScheduler 和 Apache Airflow 都是任務(wù)調(diào)度系統(tǒng),并且都是 Apache 基金會旗下,兩者有什么區(qū)別呢?這篇文章就將從使用者的角度去討論這個話題。
介紹
首先看看 Apache DolphinScheduler 和 Apache Airflow 的官方介紹。
Apache DolphinScheduler | Apache Airflow |
一個分布式易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度系統(tǒng)。致力于解決數(shù)據(jù)處理流程中錯綜復(fù)雜的依賴關(guān)系,使調(diào)度系統(tǒng)在數(shù)據(jù)處理流程中開箱即用。 | Apache Airflow (or simply Airflow) is a platform to programmatically author, schedule, and monitor workflows.? |
從官方介紹里就可以看出一個很明顯的區(qū)別:DolphinScheduler 致力于用可視化的方式去完成一個 DAG 工作流,而 Airflow 則想的是用類似于編程的方式完成一個 DAG 工作流。兩個任務(wù)調(diào)度系統(tǒng)不同的開發(fā)思路決定了它們的開發(fā)目標(biāo)也發(fā)生了變化。
Apache DolphinScheduler 的主要目標(biāo)是:
以DAG圖的方式將Task按照任務(wù)的依賴關(guān)系關(guān)聯(lián)起來,可實(shí)時可視化監(jiān)控任務(wù)的運(yùn)行狀態(tài)支持豐富的任務(wù)類型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Sub_Process、Procedure等支持工作流定時調(diào)度、依賴調(diào)度、手動調(diào)度、手動暫停/停止/恢復(fù),同時支持失敗重試/告警、從指定節(jié)點(diǎn)恢復(fù)失敗、Kill任務(wù)等操作支持工作流優(yōu)先級、任務(wù)優(yōu)先級及任務(wù)的故障轉(zhuǎn)移及任務(wù)超時告警/失敗支持工作流全局參數(shù)及節(jié)點(diǎn)自定義參數(shù)設(shè)置支持對Master/Worker cpu load,memory,cpu在線查看…
Apache Airflow 的主要目標(biāo)是:
Dynamic: Airflow pipelines are configuration as code (Python), allowing for dynamic pipeline generation. This allows for writing code that instantiates pipelines dynamically.Extensible: Easily define your own operators, executors and extend the library so that it fits the level of abstraction that suits your environment.Elegant: Airflow pipelines are lean and explicit. Parameterizing your scripts is built into the core of Airflow using the powerful Jinja templating engine.Scalable: Airflow has a modular architecture and uses a message queue to orchestrate an arbitrary number of workers.
頁面展示
Apache DolphinScheduler 和 Apache Airflow 的頁面展示都很豐富,如果非要強(qiáng)行比較的話,因?yàn)?Apache DolphinScheduler 追求用可視化去完成 DAG 工作流的設(shè)計(jì),自然比使用編程的方式完成 DAG 工作流的設(shè)計(jì)的頁面豐富度多了不少。作為使用者的角度來說,我們更會關(guān)心頁面上是否可以展示目前已經(jīng)上線的 DAG 工作流和它們的運(yùn)行情況以及在頁面上完成對 DAG 工作流的重試、刪除等操作。
查看 DAG 工作流運(yùn)行情況
Apache DolphinScheduler 和 Apache Airflow 都能做到在頁面上查看目前有哪些已經(jīng)上線的 DAG 工作流以及運(yùn)行情況。
? Apache DolphinScheduler
? Apache Airflow
對 DAG 工作流的操作
Apache DolphinScheduler 對 DAG 工作流的操作類型的豐富度是超過 Apache Airflow 的,至少 Apache Airflow 就不能在頁面上對已經(jīng)上線的 DAG 工作流進(jìn)行修改,必須要以某種方式更改存放在后臺服務(wù)器上的 DAG 文件目錄。
這兩個都支持在頁面上對 DAG 工作流進(jìn)行手動暫停/停止/恢復(fù),同時支持失敗重試/告警、從指定節(jié)點(diǎn)恢復(fù)失敗、Kill任務(wù)等操作。
開發(fā)流程
因?yàn)?Apache DolphinScheduler 和 Apache Airflow 有著不同的設(shè)計(jì)理念,所以 Apache DolphinScheduler 可以直接在頁面上完成對 DAG 工作流的開發(fā)。
而 Apache Airflow 需要提交一個 Python 文件到后臺服務(wù)器上,由 Apache Airflow 去解析這個 Python 文件,進(jìn)而生成一個 DAG 工作流。
兩者開發(fā)方式各有優(yōu)劣,Apache Airflow 需要開發(fā)者略懂 Python,而 Apache DolphinScheduler 則可以實(shí)現(xiàn)無編程基礎(chǔ)開發(fā);但是 Apache Airflow 使用 Python 文件的形式,使得可以通過 Git 等 DevOps 工具讓 DAG 工作流的變更歷史清清楚楚記錄著和輕易地將某個他人的工作流進(jìn)行復(fù)制或遷移,這一點(diǎn)上 Apache DolphinScheduler 則有點(diǎn)捉襟見肘了,雖然有 PyDolphinScheduler ,依然少了點(diǎn)味。
我認(rèn)為 Apache DolphinScheduler 如果能引入類似 Yaml 的可配置文件作為調(diào)度任務(wù)的中間層應(yīng)該能避免此類問題。
任務(wù)監(jiān)控和公共數(shù)據(jù)源
Apache DolphinScheduler 和 Apache Airflow 都可以實(shí)現(xiàn)對失敗的任務(wù)進(jìn)行重試和監(jiān)控。除此以外都能實(shí)現(xiàn)豐富類型的失敗任務(wù)告警,比如郵件、短信、釘釘、企業(yè)微信等等。
在使用者開發(fā) DAG 工作流時,經(jīng)常需要引入外部數(shù)據(jù)源,而外部數(shù)據(jù)源又會因?yàn)轭愃茢?shù)據(jù)安全定期修改密碼等原因,導(dǎo)致鏈接方式發(fā)生改變,所以 Apache DolphinScheduler 和 Apache Airflow 都有一個公共數(shù)據(jù)源的概念,可以讓所有的 DAG 工作流直接訪問這個公共數(shù)據(jù)源獲取鏈接方式,而不需要將外部數(shù)據(jù)源的鏈接方式寫死在 DAG 工作流中。如果需要更改外部數(shù)據(jù)源的鏈接方式,只需要更改 Apache DolphinScheduler 和 Apache Airflow 的公共數(shù)據(jù)源,即可在所有的 DAG 工作流中生效。
定制化開發(fā)
作為一個開源的任務(wù)調(diào)度系統(tǒng),Apache DolphinScheduler 和 Apache Airflow 自身所提供的 Task 類型只能滿足社區(qū) 90% 以上的需要,剩下的 10% 會因?yàn)殚_發(fā)團(tuán)隊(duì)的內(nèi)部遺產(chǎn)等原因需要使用任務(wù)調(diào)度系統(tǒng)的人去定制化開發(fā)。在這一點(diǎn)上, Apache DolphinScheduler 和 Apache Airflow 都提供了接口完成這個任務(wù)。
Apache DolphinSchedulerApache Airflow插件實(shí)現(xiàn)org.apache.dolphinscheduler.spi.task.TaskChannel即可。主要包含創(chuàng)建任務(wù)(任務(wù)初始化,任務(wù)運(yùn)行等方法)、任務(wù)取消,如果是 yarn 任務(wù),則需要實(shí)現(xiàn) org.apache.dolphinscheduler.plugin.task.api.AbstractYarnTask。由于任務(wù)插件涉及到前端頁面,目前前端的SPI還沒有實(shí)現(xiàn),因此你需要單獨(dú)實(shí)現(xiàn)插件對應(yīng)的前端頁面。新開發(fā)的Operator 繼承BaseOperator ,開發(fā)完后放入指定的目錄即完成了。
通過對比,我們可以發(fā)現(xiàn) Apache Airflow 開發(fā)一個新的 Task 類型要比 Apache DolphinScheduler 方便多了。
穩(wěn)定性
因?yàn)槲覀儓F(tuán)隊(duì)使用 Apache Airflow 快四年了,至今沒有發(fā)生問題,因此對于 Apache Airflow 的穩(wěn)定性是沒有什么疑問的。參考 Apache DolphinScheduler 的網(wǎng)上使用體驗(yàn)文章,Apache DolphinScheduler 的穩(wěn)定性應(yīng)該也沒有什么問題。
所以在這一點(diǎn)上,就不多做評價了,各位讀者自行評價。
社區(qū)
Apache DolphinScheduler 和 Apache Airflow 的社區(qū)都很繁榮。
Apache DolphinSchedulerApache Airflowstar數(shù)8.6k27.2kissue數(shù)53036013PR數(shù)630017936
純粹從 github 上的一些指標(biāo)來看, Apache Airflow 略勝于 Apache DolphinScheduler,但是考慮到 Apache DolphinScheduler 比 Apache Airflow 晚開源這么久,這點(diǎn)差距是能接受的。當(dāng)然,對于中國開發(fā)者而言,Apache DolphinScheduler 社區(qū)天然就要比 Apache Airflow 容易接受一點(diǎn)。
資源管控
Apache DolphinScheduler 和 Apache Airflow 都有著類似于 Yarn 的資源池的概念,方便使用者可以分門別類不同的 DAG 工作流和它們使用的資源。
總結(jié)
作為使用者而言,對任務(wù)調(diào)度系統(tǒng)的要求是比較簡單的,對于任務(wù)調(diào)度系統(tǒng)里的實(shí)現(xiàn)細(xì)節(jié)是很少去關(guān)心的。比如:
? 易用性:容易配置 DAG 工作流,能夠在頁面上可視化和操作 DAG 工作流等。
? 穩(wěn)定性:準(zhǔn)時準(zhǔn)點(diǎn)運(yùn)行任務(wù),任務(wù)調(diào)度系統(tǒng)自身不會發(fā)生宕機(jī)等問題等。
? 容易運(yùn)維:對 DAG 工作流可以進(jìn)行資源隔離等。
因此上述的一些對比僅僅是作為一個使用者的角度去看待 Apache DolphinScheduler 和 Apache Airflow 兩個任務(wù)調(diào)度系統(tǒng),作為一個深度使用 Apache Airflow 的開發(fā)者而言,上面提到的一些特性僅僅只是這兩個任務(wù)調(diào)度系統(tǒng)所有特性的很微不足道的一部分。
Apache DolphinScheduler 和 Apache Airflow 都各有優(yōu)劣,Apache DolphinScheduler 對中國開發(fā)者很友好,也可以可視化配置 DAG 工作流,適合小白團(tuán)隊(duì),如果數(shù)據(jù)團(tuán)隊(duì)懂一點(diǎn) Python 的話,Apache Airflow 也是一個很好的選擇。
參考鏈接
https://github.com/apache/dolphinscheduler
https://github.com/apache/airfl
[超站]友情鏈接:
四季很好,只要有你,文娛排行榜:https://www.yaopaiming.com/
關(guān)注數(shù)據(jù)與安全,洞悉企業(yè)級服務(wù)市場:https://www.ijiandao.com/

隨時掌握互聯(lián)網(wǎng)精彩
- 1 看總書記關(guān)心的清潔能源這樣發(fā)電 7904577
- 2 今年最強(qiáng)臺風(fēng)來襲 7808482
- 3 澳加英宣布承認(rèn)巴勒斯坦國 7714362
- 4 長春航空展這些“首次”不要錯過 7615709
- 5 43歲二胎媽媽患阿爾茨海默病 7520950
- 6 iPhone 17橙色斜挎掛繩賣斷貨 7428631
- 7 女兒發(fā)現(xiàn)父親500多萬遺產(chǎn)用于保健 7327724
- 8 三所“零近視”小學(xué)帶來的啟示 7232581
- 9 “永遠(yuǎn)不要和別人一起欺負(fù)自己” 7140787
- 10 劉強(qiáng)東“10年1元年薪”之約到期 7045423