Taier 介紹
Taier 是袋鼠云開源專案之一,是一個分布式可視化的DAG任務調度系統,
旨在降低ETL開發成本、提高大資料平臺穩定性,大資料開發人員可以在 Taier 直接進行業務邏輯的開發,而不用關心任務錯綜復雜的依賴關系與底層的大資料平臺的架構實作,將作業的重心更多地聚焦在業務之中,
專案地址:https://github.com/DTStack/Taier

Taier 資源判斷
Taier 基于插件式架構設計,用戶在界面開發任務并提交運行,提交運行插件又劃分為worker-plugins、datasource-plugins雙插件型別,
在任務提交的時候,Taier需要判斷是否有足夠的資源來執行,否則一股腦地提交任務,最侄訓拖垮環境,導致服務的不可用,根據環境資源的剩余情況來動態調整提交任務的速率是Taier必不可少的一項功能,那么Taier究竟是怎么來判斷資源的呢?
什么是資源?
對一個系統而言,首先要定義出資源的種類,然后將每種資源量化,才能進行管理,這就是資源抽象的程序,那么,想回答上文中「Taier是如何判斷資源」的這個問題,就需要先理清楚,在一個分布式、多環境的系統中,什么是資源,又為什么要有“資源”這個概念?
我們通常所說的“資源”都是硬體資源,包括CPU使用/記憶體使用/磁盤用量/IO/網路流量等等,這是比較粗粒度的,也可以是抽象層次更高的TPS/請求數之類的,
資源可以用來衡量系統的瓶頸,系統能否充分利用資源,什么時候可以持續提交任務,什么時候需要暫停提交任務,比如當總體資源充裕時,可以把對應的任務全部提交上去,
● 以Yarn框架介紹為例

ResourceManager 是一個全域的資源管理器,負責整個系統的資源管理和分配,包括 scheduler 、Application Manager和 Node Manager,
對調度器來說,YARN 提供了多種直接可用的調度器, Fair Scheduler 和 Capacity Scheduler 等,調度器僅根據各個應用程式的資源需求進行資源分配,分配的基本單位是Container,而容器里面是將記憶體、CPU、網路、磁盤封裝到一起,
在Yarn的web 界面,我們可以直觀的看到當前Yarn集群剩余的記憶體、CPU核數、運行的Container數量,對提交到yarn上的任務來說,資源就是:記憶體、CPU、磁盤等可用資訊,

所以在提交到Yarn上執行的任務,我們可以根據ResourceManager 獲取Yarn集群當前剩余的記憶體、CPU核數來進行判斷,任務能否滿足提交條件等規則,其中,最基本的規則就是:
? Yarn集群剩余的記憶體 >= 當前任務所需的記憶體
? Yarn集群剩余的CPU核數 >= 當前任務所需的CPU核數
何時去判斷資源?
任務在界面開發完成之后,點擊運行的按鈕,開始從等待提交的狀態切換,在提交運行的時候,任務組裝好集群配置資訊進入下一個階段——資源判斷,
在這個階段開始判斷資源是否滿足任務提交,如果任務滿足則進行提交,如果任務不滿足,則定時、延時、重試直到資源滿足任務執行條件,

怎樣去判斷資源?
在worker-plugins提交的抽象類中,有一個通用的方法judgeSlots 去判斷資源,
judgeSlots 的判斷結果分為以下四種:
? OK: 資源判斷滿足,任務可以提交
? NOT_OK: 不滿足任務所需資源,需要延時重試
? LIMIT_ERROR: 任務引數設定錯誤: CPU核數或記憶體為0等場景
? EXCEPTION: 任務資源判斷例外: ResourceManager連接例外等場景

● 以Spark任務為例
下文我們以Spark任務為例,看看Spark的提交插件是如何獲取對應的ResourceManager資訊并進行資源判斷的,

可以看到根據Yarn集群資訊獲取了以下資訊:
? 根據Yarn集群資訊初始化YarnClient
? 獲取Yarn集群佇列下的ACCEPTED狀態任務,是否大于控制臺yarnAccepterTaskNumber 引數設定
? 獲取Yarn集群佇列的剩余CPU核數和記憶體資訊

然后根據JobClient所攜帶的任務引數資訊,獲取了Driver、Executor 的相關記憶體和CPU資訊并進行計算,

最后將獲取到的Yarn集群資訊和任務所需的資源資訊按照固定規則進行比對,回傳對應的資源判斷結果,資源判斷的結果將會實時在 Taier 的界面上展示,所以在任務處于等待提交狀態的時候,可以去控制臺->佇列,管理并查看該任務資源判斷資訊,

Taier 未來規劃
展望未來,為進一步提升Taier的使用場景,同時也為了減少Hadoop生態在Taier中的依賴,Taier后續會擴展更多的任務型別,除了支持對接Hadoop集群外,Taier也會陸續支持相關型別的local模式運行,完善更多的場景使用,
Taier團隊非常期待得到每一個人的反饋,能夠和其他優秀開發者共同合作,進一步推動Taier的技術發展,
如果您對Taier有興趣,希望可以參與到我們的建設中來,一起交流,一起進步,為 Taier變得更好貢獻一點你的代碼和意見,這將是我們,同時也是 Taier莫大的榮幸,
想了解或咨詢更多有關袋鼠云大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠云官網:https://www.dtstack.com/?src=https://www.cnblogs.com/DTinsight/p/szbky
同時,歡迎對大資料開源專案有興趣的同學加入「袋鼠云開源框架釘釘技術qun」,交流最新開源技術資訊,qun號碼:30537511,專案地址:https://github.com/DTStack
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/542817.html
標籤:大數據
上一篇:MySQL之MVCC總結理解
