理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。為此,yarn提供了多種排程器和可配置的策略供我們選擇。
在yarn中有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fairscheduler。
1、fifo scheduler
fifo scheduler把應用按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源分配的時候,先給佇列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下乙個分配,以此類推。
fifo scheduler是最簡單也是最容易理解的排程器,也不需要任何配置,但它並不適用於共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合採用capacity scheduler或fair scheduler,這兩個排程器都允許大任務和小任務在提交的同時獲得一定的系統資源。
從圖中可以看出,在fifo 排程器中,小任務會被大任務阻塞。
而對於capacity排程器,有乙個專門的佇列用來執行小任務,但是為小任務專門設定乙個佇列會預先占用一定的集群資源,這就導致大任務的執行時間會落後於使用fifo排程器時的時間。
在fair排程器中,我們不需要預先占用一定的系統資源,fair排程器會為所有執行的job動態的調整系統資源。如下圖所示,當第乙個大job提交時,只有這乙個job在執行,此時它獲得了所有集群資源;當第二個小任務提交後,fair排程器會分配一半資源給這個小任務,讓這兩個任務公平的共享集群資源。
需要注意的是,在下圖fair排程器中,從第二個任務提交到獲得資源會有一定的延遲,因為它需要等待第乙個任務釋放占用的container。小任務執行完成之後也會釋放自己占用的資源,大任務又獲得了全部的系統資源。最終的效果就是fair排程器即得到了高的資源利用率又能保證小任務及時完成。
Yarn三種排程策略對比
理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。為...
Yarn三種排程器
理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就是scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。...
yarn的三種排程器
yarn我們都知道主要是用於做資源排程,任務分配等功能的,那麼在hadoop當中,究竟使用 什麼演算法來進行任務排程就需要我們關注了,hadoop支援好幾種任務的排程方式,不同的場 景需要使用不同的任務排程器.第一種排程器 fifo scheduler 佇列排程 把任務按提交的順序排成乙個佇列,這是...