天天看點

資料排程平台系統二大種類及其實作方法與流程什麼是排程系統作業系統的兩大種類定時類作業系統DAG工作流類作業排程系統為什麼需要排程系統 寫在最後

什麼是排程系統

排程系統,更确切地說,作業排程系統(Job Scheduler)或者說工作流排程系統(workflow Scheduler)是任何一個稍微有點規模,不是簡單玩玩的大資料開發平台都必不可少的重要組成部分。

除了Crontab,Quartz這類偏單機的定時排程程式/庫。開源的分布式作業排程系統也有很多,比較知名的比如:oozie,azkaban,chronos,zeus等等,此外,還有包括阿裡的TBSchedule,SchedulerX,騰訊的Lhotse以及我司曆盡十年磨砺的TASKCTL

作業系統的兩大種類

現在市面上的排程系統根據功能性可以分為兩類定時類作業排程系統&DAG工作流類作業排程系統這兩類系統的架構和功能實作通常存在很大的差異,下面就來跟大家普及一下這兩種作業系統的不同之處;

定時類作業系統

定時類系統的方向,重點定位于大量并發的任務分片執行場景;

在實際應用場景中,通常平時維護工作需要定時執行的業務邏輯相對離散無序,僅僅存在一定的簡單關聯。

例如:

  • 需要定時批量清理一批機器的磁盤空間,
  • 需要定時生成一批商品清單,
  • 需要定時批量對一批資料建索引,
  • 需要定時對一批使用者發送推送通知等等。

核心目标基本兩點:

1.作業分片邏輯支援:将一個大的任務拆分成多個小任務配置設定到不同的伺服器上執行, 難點在于要做到不漏,不重,保證負載平衡,節點崩潰時自動進行任務遷移等

2.高可用精确定時觸發:由于平時經常涉及到實際業務流程的及時性和準确性,是以通常需要保證任務觸發的強實時和可靠性

是以"負載均衡,彈性擴容",“狀态同步”和“失效轉移”通常是這類排程系統在架構設計時重點考慮的特性

DAG工作流類作業排程系統

主要定位于有序作業的排程依賴關系的正确處理,分片執行的邏輯通常不是系統關注的粒度,如果某些作業真的關注分片邏輯,通常交給後端叢集(比如MR任務自帶分片能力)或者具體類型的任務執行後端去實作。

DAG工作流類排程系統所服務的通常是作業繁多,作業之間的流程依賴比較複雜的場景;

如:大資料開發平台的離線數倉報表處理業務,從資料采集,清洗,到各個層級的報表的彙總運算,到最後資料導出到外部業務系統,一個完整的業務流程,可能涉及到成百上千個互相交叉依賴關聯的作業。

是以DAG工作流類排程系統關注的重點,通常會包括:

  • 足夠豐富靈活的依賴觸發機制(如:時間觸發任務,依賴觸發任務,混合觸發任務)
  • 作業的計劃,變更和執行流水的管理和同步
  • 任務的優先級管理,業務隔離,權限管理等
  • 各種特殊流程的處理(如:暫停任務,重刷曆史資料,人工标注失敗/成功,臨時任務和周期任務的協同等)
  • 完備的監控報警通知機制

小結:這兩類系統的定位目标,并不是絕對沖突沖突的,并且從目前定時類排程系統的發展來看,也需要處理一些複雜的作業間強依賴關系了,比如 "微批(少量DAG批量作業處理)" 概念的提出。隻不過,要同時圓滿的支援這兩大類需求,從實作的角度來說是很困難的,因為側重點的不同,在架構上多少會對某些方面做些取舍,目前這兩類系統都沒有能夠做到完美的兩者兼顧。

為什麼需要排程系統

我們都知道大資料的計算、分析和處理,一般由多個任務單元組成(Hive、Sparksql、Spark、Shell等),每個任務單元完成特定的資料處理邏輯。

多個任務單元之間往往有着強依賴關系,上遊任務執行并成功,下遊任務才可以執行。比如上遊任務結束後拿到 A 結果,下遊任務需結合 A 結果才能産出 B 結果,是以下遊任務的開始一定是在上遊任務成功運作拿到結果之後才可以開始。

而為了保證資料處理結果的準确性,就必須要求這些任務按照上下遊依賴關系有序、高效的執行。一個較為基礎的處理方式是,預估出每個任務處理所需時間,根據先後順序,計算出每個任務的執行的起止時間,通過定時跑任務的方式,讓整個系統保持穩定的運作。

一個完整的資料分析任務最少執行一次,在資料量較少,依賴關系較為簡單的低頻資料處理過程中,這種排程方式完全可以滿足需求。

然而在企業級場景中,更多的是需要每天執行,如果任務數量較多,在任務啟動的時間計算上就将耗費大量時間,另外如果出現上遊任務執行時長超出原定預計時間或者運作異常的問題,上述的處理方式将完全無法應對,也會對人力物力造成重複損耗,是以,對于企業資料開發過程來說,一個完整且高效的工作流排程系統将起到至關重要的作用。

寫在最後

TASKCTL目前是暫時唯一提出 "無序定時和有序DAG作業流" 完整概念的排程産品。既可以在定時中處理 "微批" 的控制,也能夠在DAG作業流中處理 "定時" 的控制。

例如:

  • 在大資料分布式(分片)計算中,對資料進行實時ETL跑批處理,
  • 在ETL作業跑批中,對某個作業或一段分支進行時間視窗内循環定時處理

了解産品詳情可以參讀:

  • etl批量作業叢集統一排程平台搭建

随着大資料應用需求的不斷膨脹,資料處理的複雜度和實時性要求越來越高。TASKCTL作為國内自主研發的專業排程産品,為企業進入大資料2.0時代做好提前布局。

如果有疑問,聯系我們

咨詢電話:028-68731039(工作日:9:30—18:00)

社群讨論:75273038(qq)

繼續閱讀