智能調度:Stanford的Quasar

智能、自動化是對系統孜孜不倦的追求,尤其是在資源調度這塊。傳統的YARN/MESOS有各種資源分配算法,如DRF,capacity schedulerfair scheduler。這些調度算法聚焦在資源的匹配和分配上面。其中最大的問題設計思路是基於預留的思路,要求應用提出資源的需求,而在現實中往往是不現實的。不現實在兩個方面:

  1. job需要的資源和需要處理的數據量,過程的複雜度強相關。而這兩者在實際的生產系統中都不是一成不變的,所以往往預留的資源要麼多大,要麼過小。

  2. 單個job實際上本身也是一個複雜的過程,需要的資源也不是一成不變的。所以按理想的狀態預留資源往往不現實,帶來的最終結果是資源利用率不高。

 

關於智能資源調度方面,我早前寫過一篇文章《智能調度蟻羣算法》,提的是設想通過蟻羣算法來自動分配資源。最近看到stanford的一篇論文《Quasar: Resource-Efficient andQoS-Aware Cluster Management》,通過簡單的分類算法就達到了job資源的預測和自動分配,解決了上面提到的2個資源分配的難題。


首先來看下Quasar的基本思路,基本過程對照上面的圖,分下面幾步:

    1. quasar不是基於資源預留和匹配的模式。Quasar提供一個high-level的接口讓用戶給調度器描述他性能約束條件。不同類型的workload接口不一樣。比如對延遲苛刻的workload,限制條件藐視爲QPS(查詢次數/)。分佈式框架,如hadoop,限制條件是執行時間。對於單機裏面單線程或者多線程workload,限制條件就是low-levelIPS(每秒執行的指令數)。這個主要取決於以哪種資源分配和制定來滿足workload.

    2. Quasar使用快速分類技術去評估不同的資源分配導致不同的workload性能。一個新進的workload和數據集,需要從一些server上採集一段時間(從幾秒到幾分鐘)。這些有限的採集信息和已有的被分類離線的workload、已經被調度過的workload組合起來。分類的結果準確的估計了應用的性能,考慮各種不同的類型和數量的服務器以及單服務的資源量,排除了其他的一些干擾。Quasar將問題分配的簡化成四種主要部分 每個節點 節點數,分配的服務器類型 和干擾的程度。這大大降低了分類的複雜性問題。

    3. quasar使用分類的結果直接用於資源的分配,消除分配和匹配的二次無效性。quasar使用貪心算法結合四個獨立的分類結果,選擇數量或具體的資源集,來達到(或接近)的性能約束。Quasar同時監視系統性能。如果在有空閒資源的情況下,約束沒有得到滿足,即使workload發生了變化(比如job內部階段變化了)說明分類是不正確的,或貪婪的次優方案到指定結果。只要條件允許Quasar會重新分配資源。

       

 

 

再來看下Quasar達到的效果。

  1. Single batch job(純粹hadoop):平均提升29%58%。

  2. Multiple Batch Frameworks performance(Hadoop,Storm, and Spark混合):提升27%。

  3. Large-Scale Cloud Provider:從15%cpu利用率提升到62%,提升47%

 

Quasar的規模也很小,6K行代碼。新增一個應用大概需要幾百行即可。

總的來說,Quasar這個是非常好的一個思路,是調度的未來發展方向,是非常值得研究和跟進的技術,有興趣的同學,可以把論文下載下來好好讀讀。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章