分布式可視化 DAG 任務(wù)調(diào)度系統(tǒng) Taier 的整體流程分析
Taier 作為袋鼠云的開源項(xiàng)目之一,是一個(gè)分布式可視化的 DAG 任務(wù)調(diào)度系統(tǒng)。旨在降低 ETL 開發(fā)成本,提高大數(shù)據(jù)平臺(tái)穩(wěn)定性,讓大數(shù)據(jù)開發(fā)人員可以在 Taier 直接進(jìn)行業(yè)務(wù)邏輯的開發(fā),而不用關(guān)心任務(wù)錯(cuò)綜復(fù)雜的依賴關(guān)系與底層的大數(shù)據(jù)平臺(tái)的架構(gòu)實(shí)現(xiàn),將工作的重心更多地聚焦在業(yè)務(wù)之中。
本文將從 Taier 的流程簡述、結(jié)構(gòu)分析以及可擴(kuò)展點(diǎn)三個(gè)方面對(duì) Taier 的整體流程進(jìn)行分析探討。
Taier 流程簡述
Taier 主從劃分
Taier 是一個(gè)單獨(dú)的應(yīng)用,進(jìn)程無主從劃分,多實(shí)例運(yùn)行時(shí)通過 ZK 實(shí)現(xiàn)主從劃分?;?LeaderLatch 進(jìn)行實(shí)現(xiàn),啟動(dòng)時(shí)搶到鎖的節(jié)點(diǎn)即為主(Master),沒有搶到鎖的即為從( Worker),會(huì)出現(xiàn)一主多從的情況。
如果其他的 Worker 在 ZK 中監(jiān)聽到 Master 已經(jīng)掛掉,那么 Worker 會(huì)再次進(jìn)行鎖的爭(zhēng)奪,搶到鎖的成為主。
在 Taier 中,作為主的主要職責(zé)包括周期實(shí)例生成、實(shí)例預(yù)分發(fā)、Worker 節(jié)點(diǎn)任務(wù)容災(zāi)、實(shí)例提交等,作為從則主要負(fù)責(zé)實(shí)例提交即可。
Taier 周期實(shí)例(T+1)
周期實(shí)例是 Taier 的專屬名詞,指的是任務(wù)按照配置的調(diào)度時(shí)間運(yùn)行一次即為一個(gè)實(shí)例,現(xiàn)在周期實(shí)例的機(jī)制為 T+1 的方式。
今日會(huì)預(yù)生成明天所有任務(wù)對(duì)應(yīng)的周期實(shí)例,即今日的周期實(shí)例由昨天生成。Taier 默認(rèn)22:00生成第二天周期實(shí)例,如果在22:00之后再將任務(wù)提交到調(diào)度系統(tǒng),這個(gè)任務(wù)則不會(huì)進(jìn)行周期實(shí)例生成的動(dòng)作。
配置項(xiàng)為 job.graph.build.cron=22:00:00,時(shí)間可以自己調(diào)整。

Taier 任務(wù)提交
Taier 任務(wù)提交的具體流程圖如下:

任務(wù)流程提交前置判斷主要分為兩個(gè)部分,一為任務(wù)上下游的依賴校驗(yàn),會(huì)判斷周期實(shí)例的上游是否已經(jīng)運(yùn)行完成,如果上游運(yùn)行失敗,那么這個(gè)任務(wù)就是不準(zhǔn)備提交的;二為資源校驗(yàn),因?yàn)槿蝿?wù)都是運(yùn)行在集群上,非常占資源,所以會(huì)進(jìn)行提交前的校驗(yàn),判斷當(dāng)前集群的資源是否充足,如果資源不足,會(huì)進(jìn)行延遲提交的動(dòng)作。
Taier 任務(wù)提交的具體代碼如下:

Taier 結(jié)構(gòu)分析
Taier 的結(jié)構(gòu)主要分為 UI、應(yīng)用層和插件三個(gè)部分,在插件中,Taier worker-plugin 和 Taier datasource-plugin 又是其中最為重要的兩個(gè)插件。

Taier worker-plugin
Taier worker-plugin 的主要用途包括:
· 任務(wù)資源判斷
· 任務(wù)提交
· 任務(wù)狀態(tài)獲取
· 任務(wù)日志獲取
· Kill 任務(wù)
具體代碼如下:


相關(guān)的類包括:
· com.dtstack.taier.common.client.ClientFactory
· com.dtstack.taier.common.client.ClientProxy
· com.dtstack.taier.common.client.ClientCache
Taier datasource-plugin
Taier datasource-plugin 的主要用途包括:
· 連通性檢查
· 執(zhí)行 SQL
· 獲取 Schema 信息
· 獲取 Table 列表
· 獲取表元數(shù)據(jù)
· 下載數(shù)據(jù)
· 下載日志
具體代碼如下:




Taier 任務(wù)提交插件
參考代碼:
com.dtstack.taier.scheduler.jobdealer.JobSubmitDealer#submitJob

Taier 可擴(kuò)展點(diǎn)
Taier 目前就核心功能進(jìn)行了開源,其他功能開發(fā)者可以自行進(jìn)行擴(kuò)展,包括:
· 任務(wù)立即生成實(shí)例
· ChunJun 向?qū)J綌U(kuò)展
· DataX 支持向?qū)J脚渲?/p>
· 數(shù)據(jù)源插件版本擴(kuò)展
· 計(jì)算引擎新增
· Hadoop 多集群版本支持
· 實(shí)例分發(fā)策略增加
視頻課程&PPT獲取
視頻課程:
https://www.bilibili.com/video/BV1wP411z7rf/?spm_id_from=333.999.0.0
課件獲?。?/p>
https://www.dtstack.com/resources/1047
《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://fs80.cn/l134d5?
《數(shù)棧V6.0產(chǎn)品白皮書》下載地址:https://fs80.cn/cw0iw1
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan
同時(shí),歡迎對(duì)大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號(hào)碼:30537511,項(xiàng)目地址:https://github.com/DTStack