【Yarn】調度器Scheduler的詳解

目錄

介紹

FIFO Scheduler

Capacity Scheduler

Fair Scheduler

總結


  • 介紹

理想情況下,我們應用對Yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在一個很繁忙的集羣,一個應用資源的請求經常需要等待一段時間才能的到相應的資源。在Yarn中,負責給應用分配資源的就是Scheduler。其實調度本身就是一個難題,很難找到一個完美的策略可以解決所有的應用場景。爲此,Yarn提供了多種調度器和可配置的策略供我們選擇。

在Yarn中有三種調度器可以選擇:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler。

 

  • FIFO Scheduler

FIFO Scheduler把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下一個分配,以此類推

 

  • Capacity Scheduler

Capacity 調度器允許多個組織共享整個集羣,每個組織可以獲得集羣的一部分計算能力。通過爲每個組織分配專門的隊列,然後再爲每個隊列分配一定的集羣資源,這樣整個集羣就可以通過設置多個隊列的方式給多個組織提供服務了。除此之外,隊列內部又可以垂直劃分,這樣一個組織內部的多個成員就可以共享這個隊列資源了,在一個隊列內部,資源的調度是採用的是先進先出(FIFO)策略。

容量調度器 Capacity Scheduler 最初是由 Yahoo 最初開發設計使得 Hadoop 應用能夠被多用戶使用,且最大化整個集羣資源的吞吐量,現被 IBM BigInsights 和 Hortonworks HDP 所採用。

Capacity Scheduler 被設計爲允許應用程序在一個可預見的和簡單的方式共享集羣資源,即"作業隊列"。Capacity Scheduler 是根據租戶的需要和要求把現有的資源分配給運行的應用程序。Capacity Scheduler 同時允許應用程序訪問還沒有被使用的資源,以確保隊列之間共享其它隊列被允許的使用資源。管理員可以控制每個隊列的容量,Capacity Scheduler 負責把作業提交到隊列中。

 

  • Fair Scheduler

在Fair調度器中,我們不需要預先佔用一定的系統資源,Fair調度器會爲所有運行的job動態的調整系統資源。如下圖所示,當第一個大job提交時,只有這一個job在運行,此時它獲得了所有集羣資源;當第二個小任務提交後,Fair調度器會分配一半資源給這個小任務,讓這兩個任務公平的共享集羣資源。

需要注意的是,在下圖Fair調度器中,從第二個任務提交到獲得資源會有一定的延遲,因爲它需要等待第一個任務釋放佔用的Container。小任務執行完成之後也會釋放自己佔用的資源,大任務又獲得了全部的系統資源。最終效果就是Fair調度器即得到了高的資源利用率又能保證小任務及時完成

 

公平調度器 Fair Scheduler 最初是由 Facebook 開發設計使得 Hadoop 應用能夠被多用戶公平地共享整個集羣資源,現被 Cloudera CDH 所採用。

Fair Scheduler 不需要保留集羣的資源,因爲它會動態在所有正在運行的作業之間平衡資源。

 

  • 總結

FIFO Scheduler : 先進先出(先來後到的順序)

Capacity Scheduler:容量調度

Fair Scheduler:公平調度

 

先進先出:優先提交的,優先執行,後面提交的等待。(火車過隧道)。

容量調度:允許看創建多個任務對列,多個任務對列可以同時執行。但是一個隊列內部還是先進先出。CDH默認的調度器。

公平調度:第一個程序在啓動時可以佔用其他對列的資源(100%佔用),當其他對列有任務提交時,佔用資源的對列需要將資源還給該任務。還資源的時候,效率比較慢。

 

 

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