Yarn三種排程器

2021-09-06 23:19:22 字數 1573 閱讀 9511

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

在yarn中有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fair scheduler。

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

fifo scheduler是最簡單也是最容易理解的排程器,也不需要任何配置,但它並不適用於共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合採用capacity scheduler或fair scheduler,這兩個排程器都允許大任務和小任務在提交的同時獲得一定的系統資源。

從圖中可以看出,在fifo 排程器中,小任務會被大任務阻塞。

而對於capacity排程器,有乙個專門的佇列用來執行小任務,但是為小任務專門設定乙個佇列會預先占用一定的集群資源,這就導致大任務的執行時間會落後於使用fifo排程器時的時間。capacity 排程器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能力。通過為每個組織分配專門的佇列,然後再為每個佇列分配一定的集群資源,這樣整個集群就可以通過設定多個佇列的方式給多個組織提供服務了。除此之外,佇列內部又可以垂直劃分,這樣乙個組織內部的多個成員就可以共享這個佇列資源了,在乙個佇列內部,資源的排程是採用的是先進先出(fifo)策略。

在fair排程器中,我們不需要預先占用一定的系統資源,fair排程器會為所有執行的job動態的調整系統資源。如圖所示,當第乙個大job提交時,只有這乙個job在執行,此時它獲得了所有集群資源;當第二個小任務提交後,fair排程器會分配一半資源給這個小任務,讓這兩個任務公平的共享集群資源。舉個例子,假設有兩個使用者a和b,他們分別擁有乙個佇列。當a啟動乙個job而b沒有任務時,a會獲得全部集群資源;當b啟動乙個job後,a的job會繼續執行,不過一會兒之後兩個任務會各自獲得一半的集群資源。如果此時b再啟動第二個job並且其它job還在執行,則它將會和b的第乙個job共享b這個佇列的資源,也就是b的兩個job會用於四分之一的集群資源,而a的job仍然用於集群一半的資源,結果就是資源最終在兩個使用者之間平等的共享。

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

yarn的三種排程器

yarn我們都知道主要是用於做資源排程,任務分配等功能的,那麼在hadoop當中,究竟使用 什麼演算法來進行任務排程就需要我們關注了,hadoop支援好幾種任務的排程方式,不同的場 景需要使用不同的任務排程器.第一種排程器 fifo scheduler 佇列排程 把任務按提交的順序排成乙個佇列,這是...

Yarn三種排程策略對比

理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。為...

Yarn三種排程策略對比

理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。為...