YARN global scheduling (全局調度思想解析)

**

YARN全局調度

**
本文將對 https://issues.apache.org/jira/browse/YARN-5139 這個yarn前瞻性功能,全局調度的思想進行深入分析。

首先了解一下全局調度和現有的調度模式有何區別,以及社區爲什麼要對全局調度進行研究開發工作,相比於現在的調度模式有何優勢。

  • 現有的調度模式:
    現有的調度模式是基於NM(NodeManager)的心跳的方式進行調度的(不考慮持續調度模式),進行調度時,一次只考慮一個節點,這很容易造成非最優的調度。舉個例子,一個請求要到第100個節點的心跳過來纔是他最合適的節點,那麼很可能到中間某一次心跳就分給他資源了,不是他最滿意的節點。
    其大概邏輯如下
for node in allNodes:
   Go to parentQueue
      Go to leafQueue
        for application in leafQueue.applications:
           for resource-request in application.resource-requests
              try to schedule on node

首先收到NM的心跳,如有空閒Container則進行調度,調度的層次是從父隊列到子隊列,再到對應的app,最終把應該調度的資源請求在該心跳的節點上進行資源分配。

考慮未來可能的複雜需求:
1.比如申請需要的節點限制:a&&b||c ,必須要在滿足a節點 和 b節點的情況下,或者滿足c節點進行資源分配。
2.或者有對立的需求,例如HBASE的regionsevers和Storm workers不能分配在同一個節點上。
所以社區考慮把YARN的調度器像全局調度發展。

和現有的調度模式不同,全局調度需要能實現調度的時候,可以對更多的節點進行考慮,找到與應用程序需求最匹配的那些節點。

全局調度的調度邏輯爲(提出候選節點的概念,不再是隻考慮心跳的節點):

  Go to parentQueue
    Go to leafQueue
      for application in leafQueue.applications:
        for resource-request in application.resource-requests
          for node in nodes (node candidates sorted according to resource-request)
            try to schedule on node

主要committer Wangda Tan 的評論:
Because only application knows which node is best for its pending resource requests, so we can sort and filter node candidates based on application’s resource-requests.(因爲只有application 知道哪一個節點最適合pending的資源,所以我們可以根據應用的資源請求來對候選節點進行排序)

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