2016-09-20 47 views

回答

0

基於文檔,YARN旨在允許單個應用程序(通過ApplicationMaster)以共享,安全和多租戶方式利用集羣資源。此外,爲了有效調度和優化數據訪問,它仍然意識到集羣拓撲結構,即儘可能減少應用程序的數據移動。

爲了實現這些目標,中央調度程序(在ResourceManager中)有關於應用程序的資源需求的大量信息,這使得它能夠在集羣中的所有應用程序做出更好的調度決策。這導致我們到ResourceRequest和由此產生的容器。

本質上,應用程序可以通過ApplicationMaster請求特定資源請求以滿足其資源需求。調度程序通過授予容器來響應資源請求,該容器滿足ApplicationMaster在初始ResourceRequest中規定的要求。

正如你可能知道,我們有紗三種調度方法:

  • 公平調度
  • 容量調度
  • FIFO調度

他們每個人都有自己的方法來計算應用資源需求。

例如,CapacityScheduler具有ResourceCalculator的概念 - 即通過觀察所有所識別的資源用於進行分配的數學一個可插入的層。這包括幫助做出以下決定的實用程序:

  • 此節點是否有足夠的每種資源類型資源來滿足此請求?
  • 我可以在這個節點上安裝多少個容器,對具有不同可用資源的節點列表進行排序。 YARN中有兩種計算器可用 - DefaultResourceCalculator和DominantResourceCalculator。

在執行計算時,DefaultResourceCalculator只考慮內存。這就是默認情況下在CapacityScheduler中執行分配時CPU要求被忽略的原因。所有的分配數學都減少到僅僅檢查資源請求所需的內存以及在特定調度週期內正在查看的節點上可用的內存。

+0

所以,你的意思是每個調度程序都有其優先級,有時CPU很重要或有時候是內存,? 任務完成後會發生什麼?容器還在嗎? – mndn

+0

@mndn是的,但它們都很重要。容器是由CPU和內存組成的二維空間。優先級將由調度程序計算並傳遞給ResourceRequest。任務完成後,容器將被移除。 –

+0

感謝您的幫助。我最後一個問題是調度程序如何估計資源的數量?他們是否使用歷史信息? – mndn

相關問題