Hadoop 系列YARN:資源調度平臺(YARN的調度器)

YARN:資源調度平臺

 YARN的調度器

能夠這樣理解,Hadoop至關於一臺虛擬計算機(由多臺計算機構造的集羣),那麼HDFS就是這臺虛擬計算機的文件系統,管理磁盤資源;而YARN負責管理虛擬計算機的CPU和內存資源。在YARN上跑的MapReduce程序(上一節跑的PI和wordcount兩個應用程序)就是在這臺虛擬計算機跑的應用程序,須要磁盤、內存和CPU等資源。

因此,咱們能夠這樣認爲:HDFS+YARN=Cluster OS(集羣操做系統)

Yarn的資源調度目前支持內存和CPU兩種資源。Yarn支持三種調度方式:FIFO、FAIR和DRF分別是指先來先服務、公平調度和主資源公平調度。

web

FIFO調度器

FIFO(First in first out):先按照優先級高低調度,若是優先級相同,則按照提交時間前後順序調度,若是提交時間相同,則按照(隊列或者應用程序)名稱大小(字符串比較)調度;不支持有子隊列的狀況。
在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求知足後再給下一個分配,以此類推。
FIFO Scheduler是最簡單也是最容易理解的調度器,也不須要任何配置,但它並不適用於共享集羣。
算法

從圖中能夠看出,在FIFO 調度器中,小任務會被大任務阻塞。大的應用可能會佔用全部集羣資源,這就致使其它應用被阻塞。在共享集羣中,更適合採用Capacity Scheduler或Fair Scheduler,這兩個調度器都容許大任務和小任務在提交的同時得到必定的系統資源。

單隊列組織方式:FIFO Scheduler
將全部的應用程序放到一個隊列中。
侷限性明顯:資源利用率低,沒法交叉運行做業。不夠靈活,好比緊急的做業沒法插隊。oop

Fair調度器spa

FAIR:按照內存資源使用量比率調度,即按照used_memory/minShare大小調度(核心思想是按照該調度算法決定調度順序,但還需考慮一些邊界狀況);

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

須要注意的是,在下圖Fair調度器中,從第二個任務提交到得到資源會有必定的延遲,由於它須要等待第一個任務釋放佔用的Container。小任務執行完成以後也會釋放本身佔用的資源,大任務又得到了所有的系統資源。最終的效果就是Fair調度器即獲得了高的資源利用率又能保證小任務及時完成。
操作系統

注意,CDH默認使用的是公平調度器。3d

5.5.3 Capacity調度器

對於Capacity調度器,有一個專門的隊列用來運行小任務,可是爲小任務專門設置一個隊列會預先佔用必定的集羣資源,這就致使大任務的執行時間會落後於使用FIFO調度器時的時間。blog

Apache Hadoop Yarn默認使用Capacity調度器,能夠直接經過YARN 的web頁面查看當前啓用的調度器。隊列

相關文章
相關標籤/搜索