DolphinScheduler 调度系统
一 .背景
今天跟客戶聊天的時(shí)候,聊到了調(diào)度系統(tǒng),拋出三個(gè)顧慮 :
調(diào)度系統(tǒng)現(xiàn)在市面上的調(diào)度系統(tǒng)那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 為什么要選DolphinScheduler ?
其他的調(diào)度產(chǎn)品用的都是主流的語言比如java,調(diào)度底層都是用的quartz,穩(wěn)定性都不錯(cuò)啊,功能/技術(shù)都差不多啊,為啥選他 ?
DolphinScheduler我之前都沒聽過,這么新的東西我為什么要選他,為他承擔(dān)風(fēng)險(xiǎn) ? 別人來質(zhì)疑我的選型的時(shí)候,咋懟回去 ?
仔細(xì)一聽都沒毛病.是差不多啊. 那么為啥要選DolphinScheduler ???
在我的觀念里面,沒有最好的, 只有結(jié)合自身的業(yè)務(wù)/技術(shù)情況挑選最合適的技術(shù)產(chǎn)品.
那么接下來, 我從自身的使用情況來說一下,為什么要選型DolphinScheduler ?
二 .定位
為什么上來就說定位呢, 主要是為了縮小對(duì)比的范圍.
DolphinScheduler 的定位是 大數(shù)據(jù) 工作流 調(diào)度 .
我把 大數(shù)據(jù) 和 工作流 做了重點(diǎn)標(biāo)注. 從而可以知道 DolphinScheduler的定位是針對(duì)于大數(shù)據(jù)體系.
我這搞的是大數(shù)據(jù)平臺(tái), 目前主流的大數(shù)據(jù)調(diào)度組件有 : Oozie、Azkaban、Airflow 所以本文只是針對(duì)這三個(gè)技術(shù)做對(duì)比.
注 : kettle,xxl-job ,Spring batch 的定位任務(wù)調(diào)度,非大數(shù)據(jù)體系,對(duì)大數(shù)據(jù)體系的支持較弱,而且普遍都非HA,存在單點(diǎn)故障. 因?yàn)楫a(chǎn)品定位的不同,所以不做對(duì)比.
三 .案例
市場的認(rèn)可度是檢驗(yàn)產(chǎn)品價(jià)值的唯一真理.
我在調(diào)研技術(shù)的時(shí)候,如果市場認(rèn)可度不高,那么基本就直接放棄了.
老牌調(diào)度Oozie、Azkaban、Airflow 我就不細(xì)說了,畢竟是老牌調(diào)度.市場的認(rèn)可度和使用情況大家應(yīng)該都使用過或者聽說過.
DolphinScheduler從2019年3月正式發(fā)布第一個(gè)開源1.0.0版本到現(xiàn)在, 貌似到現(xiàn)在才兩年的時(shí)間, 所以重點(diǎn)說一下.
?
四 .竟品對(duì)比
在大數(shù)據(jù)領(lǐng)域, DolphinScheduler 對(duì)標(biāo)的開源產(chǎn)品是 oozie、Azkaban、Airflow .
因?yàn)楣镜闹髁鏖_發(fā)語言是Java , 考慮到成本維護(hù)之類的因素,因?yàn)锳irflow使用的語言是Python , 跟公司的技術(shù)棧不匹配. 所以先排除掉 .
對(duì)比情況如下 :
DolphinScheduler?? ?Azkaban?? ?Oozie
社區(qū)狀況?? ??? ??? ?
所屬社區(qū)?? ?apache?? ?Linkedin?? ?apache
社區(qū)活躍度?? ?高?? ?中?? ?低
穩(wěn)定性?? ??? ??? ?
單點(diǎn)故障?? ?去中心化的多Master和多Worker?? ?是
單個(gè)Web和調(diào)度程序組合節(jié)點(diǎn)?? ?是
HA?? ?支持
(HA需要依賴ZK,資源中心?? ?支持?? ?不支持[待確認(rèn)]
過載處理?? ?任務(wù)隊(duì)列+多種任務(wù)分配策略+自我保護(hù)機(jī)制?? ?任務(wù)過多服務(wù)器卡頓?? ?任務(wù)過多服務(wù)器卡頓
易用性?? ??? ??? ?
DAG監(jiān)控界面?? ?任務(wù)狀態(tài)、任務(wù)類型、重試次數(shù)、任務(wù)運(yùn)行機(jī)器、可視化變量等關(guān)鍵信息一目了然?? ?部分任務(wù)相關(guān)信息?? ?部分任務(wù)相關(guān)信息
可視化流程定義?? ?支持
[所有的流程定義都是可視化的,通過拖拽任務(wù)來繪制DAG, 配置數(shù)據(jù)源以及資源.對(duì)于第三方系統(tǒng),提供api操作]?? ?否[編碼配置]?? ?否[編碼配置]
快速部署?? ?一鍵部署?? ?部署相對(duì)復(fù)雜?? ?部署相對(duì)復(fù)雜
容器化部署?? ?支持?? ?否?? ?否
功能?? ??? ??? ?
是否支持暫停和恢復(fù)?? ?支持?? ?否?? ?否
是否支持多租戶?? ?支持?? ?否?? ?否
任務(wù)類型?? ?傳統(tǒng)的shell 、python任務(wù), 同時(shí)支持大數(shù)據(jù)平臺(tái)任務(wù)調(diào)度: MR、Spark、Flink、SQL、DataX、Sqoop等等?? ?shell、gobblin、hadoopJava、java、hive、pig、spark、hdfsToTeradata、teradataToHdfs等?? ?Pig,Hive,Sqoop和Distcp,Spark
可視化數(shù)據(jù)源管理?? ?支持?? ?不支持?? ?不支持
可視化文件管理?? ?支持
[需要依賴外部存儲(chǔ)比如HDFS,S3A,minIO]?? ?不支持?? ?不支持
手動(dòng)/定時(shí)觸發(fā)任務(wù)?? ?支持?? ?支持?? ?支持
告警?? ?支持 [ 郵件/企業(yè)微信/釘釘/自擴(kuò)展 ]?? ?支持?? ?待確認(rèn)
擴(kuò)展?? ??? ??? ?
自定義任務(wù)類型?? ?支持?? ?支持?? ?不支持
支持集群擴(kuò)展?? ?是
調(diào)度器使用分布式調(diào)度,整體的調(diào)度能力會(huì)隨集群的規(guī)模線性增長,Master/Worker支持動(dòng)態(tài)擴(kuò)容/縮容?? ?是 [相對(duì)復(fù)雜]?? ?-
表格中的信息如果有不嚴(yán)謹(jǐn)?shù)牡胤?歡迎指正.
我們?cè)诳匆幌翫olphinScheduler技術(shù)棧 :
后端: SpringBoot (2.x)
前端: VUE
編譯: Maven(3.3+) ,
元數(shù)據(jù)存儲(chǔ): Mysql5.5+
分布式無中心化設(shè)計(jì): ZooKeeper(3.4.6+)
統(tǒng)一資源管理 : 共享存儲(chǔ)[HDFS、S3A、MinIO]
主流技術(shù)棧,二次開發(fā)基本零門檻 .
五 .DolphinScheduler簡介
Apache DolphinScheduler 于 17 年在易觀數(shù)科立項(xiàng), 19 年 3 月開源,8 月進(jìn)入 Apache 孵化器, 已累計(jì)有 400+ 公司在生產(chǎn)上使用.
一個(gè)分布式易擴(kuò)展的可視化DAG工作流任務(wù)調(diào)度系統(tǒng)。致力于解決數(shù)據(jù)處理流程中錯(cuò)綜復(fù)雜的依賴關(guān)系,使調(diào)度系統(tǒng)在數(shù)據(jù)處理流程中開箱即用。
其主要目標(biāo)如下:
? ? ? ? * 以DAG圖的方式將Task按照任務(wù)的依賴關(guān)系關(guān)聯(lián)起來,可實(shí)時(shí)可視化監(jiān)控任務(wù)的運(yùn)行狀態(tài)
?? ??? ?* 支持豐富的任務(wù)類型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等
?? ??? ?* 支持工作流定時(shí)調(diào)度、依賴調(diào)度、手動(dòng)調(diào)度、手動(dòng)暫停/停止/恢復(fù),同時(shí)支持失敗重試/告警、- 從指定節(jié)點(diǎn)恢復(fù)失敗、Kill任務(wù)等操作
?? ??? ?* 支持工作流優(yōu)先級(jí)、任務(wù)優(yōu)先級(jí)及任務(wù)的故障轉(zhuǎn)移及任務(wù)超時(shí)告警/失敗
?? ??? ?* 支持工作流全局參數(shù)及節(jié)點(diǎn)自定義參數(shù)設(shè)置
?? ??? ?* 支持資源文件的在線上傳/下載,管理等,支持在線文件創(chuàng)建、編輯
?? ??? ?* 支持任務(wù)日志在線查看及滾動(dòng)、在線下載日志等
?? ??? ?* 實(shí)現(xiàn)集群HA,通過Zookeeper實(shí)現(xiàn)Master集群和Worker集群去中心化
?? ??? ?* 支持對(duì)Master/Worker cpu load,memory,cpu在線查看
?? ??? ?* 支持工作流運(yùn)行歷史樹形/甘特圖展示、支持任務(wù)狀態(tài)統(tǒng)計(jì)、流程狀態(tài)統(tǒng)計(jì)
?? ??? ?* 支持補(bǔ)數(shù)
?? ??? ?* 支持多租戶
?? ??? ?* 其他....
系統(tǒng)優(yōu)勢
主要能力
可視化流程
K8s 支持
六 .社區(qū)發(fā)展
DolphinScheduler為國內(nèi)開源項(xiàng)目,相對(duì)其他國外項(xiàng)目,有天然的本土優(yōu)勢.
截止目前 DolphinScheduler 共建立了8個(gè)用戶群,1個(gè)開發(fā)種子群,1個(gè)開發(fā)者群. 總?cè)藬?shù)4000+, 截止目前對(duì)DolphinScheduler做過貢獻(xiàn)的開發(fā)者有220+ . 社區(qū)活躍度很高.
目前開源對(duì)比情況如下(數(shù)據(jù)統(tǒng)計(jì)時(shí)間截止月2021年2月底):
項(xiàng)目名稱?? ?Start數(shù)量?? ?Fork數(shù)量?? ?Issue數(shù)量?? ?Contributors 數(shù)量
DolphinScheduler?? ?5.1k?? ?1.8k?? ?4862?? ?180 人
Azkaban?? ?3.6k?? ?1.4k?? ?2769?? ?104人
Oozie?? ?0.59k?? ?0.43k?? ?–?? ?16人
Airflow?? ?20.5k?? ?8k?? ?2837?? ?2836人
七.性能數(shù)據(jù)參考
生產(chǎn)環(huán)境
易觀千帆是每天需要處理數(shù)百億條數(shù)據(jù),月活 6.2億,6.8 PB 的大數(shù)據(jù)集群經(jīng)過每天上萬個(gè)任務(wù) ETL 處理加工而產(chǎn)生的 SaaS 服務(wù)應(yīng)用。
壓測
因?yàn)閳?zhí)行任務(wù)的類型不同,所消耗的cpu/內(nèi)存/網(wǎng)絡(luò)/磁盤的資源也不同,因?yàn)閳?zhí)行大數(shù)據(jù)體系任務(wù)都是將任務(wù)統(tǒng)一提交到Y(jié)arn集群,僅僅是提交一個(gè)shell指令. 為了模擬, 所以該測試數(shù)據(jù)僅為執(zhí)行shell腳本, 數(shù)據(jù)僅為參考,請(qǐng)以實(shí)際環(huán)境為準(zhǔn).
機(jī)配置為 :?
?? ?5臺(tái)物理 ?16核 32g內(nèi)存 千兆網(wǎng)卡.
?? ?
?? ?線程總數(shù): 16 * 5 = 80?
?? ?內(nèi)存總數(shù): 32 * 5 = 160G?
壓測結(jié)果:
?? ?并行任務(wù)數(shù)量在 8000+
?? ?數(shù)據(jù)庫連接數(shù)據(jù): 1100+
?? ?
?? ?cpu占用 10% +
?? ?內(nèi)存占用 40%+
調(diào)整參數(shù):?
?? ?master.exec.threads=6000
?? ?master.exec.task.num=20?
?? ?
?? ?worker.exec.threads=6000
?? ?
?? ?內(nèi)存配置:
?? ?Api : 4G
?? ?Master : 4G
?? ?Worker: 4G
?
總結(jié)
以上是生活随笔為你收集整理的DolphinScheduler 调度系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP_常用BADI清单
- 下一篇: 未启用远程计算机的访问,技术员解决win