一看就懂!任務提交的資源判斷在Taier中的實踐
Taier 介紹
Taier 是袋鼠雲開源專案之一,是一個 。
旨在降低ETL開發成本、提高大資料平臺穩定性,大資料開發人員可以在 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上的任務來說,資源就是: 。
所以在提交到Yarn上執行的任務,我們可以根據ResourceManager 獲取Yarn叢集當前剩餘的記憶體、CPU核數來進行判斷,任務能否滿足提交條件等規則。其中,最基本的規則就是:
• Yarn叢集剩餘的記憶體 >= 當前任務所需的記憶體
• Yarn叢集剩餘的CPU核數 >= 當前任務所需的CPU核數
何時去判斷資源?
任務在介面開發完成之後,點選執行的按鈕,開始從等待提交的狀態切換。在提交執行的時候,任務組裝好叢集配置資訊進入下一個階段—— 。
在這個階段開始判斷資源是否滿足任務提交。如果任務滿足則進行提交,如果任務不滿足,則定時、延時、重試直到資源滿足任務執行條件。
怎樣去判斷資源?
在worker-plugins提交的抽象類中,有一個通用的方法 去判斷資源。
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的使用場景,同時也為了減少Hadoop生態在Taier中的依賴,Taier後續會 。除了支援對接Hadoop叢集外,Taier也會陸續支援相關型別的local模式執行,完善更多的場景使用。
Taier團隊非常期待得到每一個人的反饋,能夠和其他優秀開發者共同合作,進一步推動Taier的技術發展。
如果您對Taier有興趣,希望可以參與到我們的建設中來,一起交流,一起進步,為 Taier變得更好貢獻一點你的程式碼和意見,這將是我們,同時也是 Taier莫大的榮幸。
想了解更多有關袋鼠雲大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szitpub
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2933541/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 最全的python自學資源,一看就懂!Python
- 一看就懂的SpringSpring
- 一看你就懂,超詳細 java 中的 ClassLoader 詳解Java
- 新手一看就懂的執行緒池!執行緒
- 一看就懂的TCP握手和揮手TCP
- 一看就懂的:MySQL資料頁以及頁分裂機制MySql
- SiamBAN詳細分析,一看就懂!
- 模擬微任務 判斷是否有對應的apiAPI
- 一看就懂的交換機基礎知識
- 一看就懂的Android APP開發入門教程!AndroidAPP
- TDengine在弘源泰平量化投資中的實踐
- Python爬蟲詳解(一看就懂)Python爬蟲
- 如何做出讓玩家“一看就懂,一玩就會”的新手引導
- 開源公開課丨大資料排程系統 Taier 任務排程介紹大資料AI
- js函式中的if判斷和a==b判斷JS函式
- js判斷json中資料的真假JSON
- 資料服務在新媒體業務體系中的實踐
- Windows程式通訊之一看就懂的匿名管道通訊Windows
- 保證你一看就懂的C語言指標模型C語言指標模型
- 詳細判斷瀏覽器執行環境(可能是最全的判斷,值得一看)瀏覽器
- Flink Yarn的2種任務提交方式Yarn
- 單測在商家前端業務中的實踐前端
- 一看就懂的IdentityServer4認證授權設計方案IDEServer
- 一看就懂的氣泡排序和【3】步深度優化法排序優化
- 分享一個在js中判斷資料是undefined,NaN,null,的技巧JSUndefinedNaNNull
- SpringBoot中併發定時任務的實現、動態定時任務的實現(看這一篇就夠了)Spring Boot
- CompleteFuture實現簡單的任務編排實踐
- 一看就懂的python小程式-支援多執行緒聊天例項Python執行緒
- 開源實踐 | 攜程在 OceanBase 的探索與實踐
- 開源實踐 | 攜程在OceanBase的探索與實踐
- 一看就懂的MySQL的聚簇索引,以及聚簇索引是如何長高的MySql索引
- js中的型別判斷JS型別
- 基於開源大資料排程系統Taier的Web前端架構選型及技術實踐大資料AIWeb前端架構
- 一看就懂之webpack高階配置與優化Web優化
- 資訊公交服務在滴滴的應用實踐
- Java非同步判斷執行緒池所有任務是否執行完成的方法Java非同步執行緒
- 判斷js中的資料型別的幾種方法JS資料型別
- 一看就會的jQuery外掛實現方法jQuery