Taier 作為[袋鼠雲](https://www.dtstack.com/?src=szsm)的[開源項目](https://www.dtstack.com/?src=szsm)之一,是一個[分散式可視化的 DAG 任務調度系統](https://www.dtstack.com/?src=szsm ...
Taier 作為袋鼠雲的開源項目之一,是一個分散式可視化的 DAG 任務調度系統。旨在降低 ETL 開發成本,提高大數據平臺穩定性,讓大數據開發人員可以在 Taier 直接進行業務邏輯的開發,而不用關心任務錯綜複雜的依賴關係與底層的大數據平臺的架構實現,將工作的重心更多地聚焦在業務之中。
本文將從 Taier 的流程簡述、結構分析以及可擴展點三個方面對 Taier 的整體流程進行分析探討。
Taier 流程簡述
Taier 主從劃分
Taier 是一個單獨的應用,進程無主從劃分,多實例運行時通過 ZK 實現主從劃分。基於 LeaderLatch 進行實現,啟動時搶到鎖的節點即為主(Master),沒有搶到鎖的即為從( Worker),會出現一主多從的情況。
如果其他的 Worker 在 ZK 中監聽到 Master 已經掛掉,那麼 Worker 會再次進行鎖的爭奪,搶到鎖的成為主。
在 Taier 中,作為主的主要職責包括周期實例生成、實例預分發、Worker 節點任務容災、實例提交等,作為從則主要負責實例提交即可。
Taier 周期實例(T+1)
周期實例是 Taier 的專屬名詞,指的是任務按照配置的調度時間運行一次即為一個實例,現在周期實例的機製為 T+1 的方式。
今日會預生成明天所有任務對應的周期實例,即今日的周期實例由昨天生成。Taier 預設22:00生成第二天周期實例,如果在22:00之後再將任務提交到調度系統,這個任務則不會進行周期實例生成的動作。
配置項為 job.graph.build.cron=22:00:00,時間可以自己調整。
Taier 任務提交
Taier 任務提交的具體流程圖如下:
任務流程提交前置判斷主要分為兩個部分,一為任務上下游的依賴校驗,會判斷周期實例的上游是否已經運行完成,如果上游運行失敗,那麼這個任務就是不准備提交的;二為資源校驗,因為任務都是運行在集群上,非常占資源,所以會進行提交前的校驗,判斷當前集群的資源是否充足,如果資源不足,會進行延遲提交的動作。
Taier 任務提交的具體代碼如下:
Taier 結構分析
Taier 的結構主要分為 UI、應用層和插件三個部分,在插件中,Taier worker-plugin 和 Taier datasource-plugin 又是其中最為重要的兩個插件。
Taier worker-plugin
Taier worker-plugin 的主要用途包括:
· 任務資源判斷
· 任務提交
· 任務狀態獲取
· 任務日誌獲取
· Kill 任務
具體代碼如下:
相關的類包括:
· com.dtstack.taier.common.client.ClientFactory
· com.dtstack.taier.common.client.ClientProxy
· com.dtstack.taier.common.client.ClientCache
Taier datasource-plugin
Taier datasource-plugin 的主要用途包括:
· 連通性檢查
· 執行 SQL
· 獲取 Schema 信息
· 獲取 Table 列表
· 獲取表元數據
· 下載數據
· 下載日誌
具體代碼如下:
Taier 任務提交插件
參考代碼:
com.dtstack.taier.scheduler.jobdealer.JobSubmitDealer#submitJob
Taier 可擴展點
Taier 目前就核心功能進行了開源,其他功能開發者可以自行進行擴展,包括:
· 任務立即生成實例
· ChunJun 嚮導模式擴展
· DataX 支持嚮導模式配置
· 數據源插件版本擴展
· 計算引擎新增
· Hadoop 多集群版本支持
· 實例分發策略增加
視頻課程&PPT獲取
視頻課程:
https://www.bilibili.com/video/BV1wP411z7rf/?spm_id_from=333.999.0.0
課件獲取:
https://www.dtstack.com/resources/1047
《數棧產品白皮書》:https://www.dtstack.com/resources/1004?src=szsm
《數據治理行業實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm
想瞭解或咨詢更多有關袋鼠雲大數據產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szbky
同時,歡迎對大數據開源項目有興趣的同學加入「袋鼠雲開源框架釘釘技術qun」,交流最新開源技術信息,qun號碼:30537511,項目地址:https://github.com/DTStack