Java大數據學習11--資源調度平臺Yarn的執行流程和三種調度器介紹

一、概述
Yarn是一個資源調度平臺,負責爲運算程序提供服務器運算資源,相當於一個分佈式的操作系統平臺,而mapreduce等運算程序則相當於運行於操作系統之上的應用程序。

二、重要概念
1、yarn並不清楚用戶提交的程序的運行機制
2、yarn只提供運算資源的調度(用戶程序向yarn申請資源,yarn就負責分配資源)
3、yarn中的主管角色叫ResourceManager
4、yarn中具體提供運算資源的角色叫NodeManager
5、這樣一來,yarn其實就與運行的用戶程序完全解耦,就意味着yarn上可以運行各種類型的分佈式運算程序(mapreduce只是其中的一種),比如mapreduce、storm程序,spark程序,tez ……
6、所以,spark、storm等運算框架都可以整合在yarn上運行,只要他們各自的框架中有符合yarn規範的資源請求機制即可
7、Yarn就成爲一個通用的資源調度平臺,從此,企業中以前存在的各種運算集羣都可以整合在一個物理集羣上,提高資源利用率,方便數據共享

三、執行流程
1、客戶端向ResourceManager申請一個運行mr程序的job。
2、ResourceManager返回一個jobid以及提交資源用的路徑stagingDir給客戶端。
3、客戶端將mr相關資源文件根據資源提交路徑提交到HDFS完畢後通知ResourceManager。
4、ResourceManager初始化任務job,加到任務調度隊列中。(目前有三種隊列調度策略FIFO、Capacity Scheduler和Fair Scheduler)
5、NodeManager通過隊列領取到job後,分配資源容器Container,啓動MRAppmaster程序。
6、Container從HDFS上拷貝資源到本地。
7、MRAppmaster向ResourceManager申請運行MapTask資源。
8、ResourceManager將運行MapTask任務分配給另外兩個NodeManager,另外兩個NodeManager分別領取任務並創建容器。
9、MapReduce向兩個接收到任務的NodeManager發送程序啓動腳本,這兩個NodeManager分別啓動MapTask,MapTask對數據分區排序。
10、MrAppMaster等待所有MapTask運行完畢,向ResourceManager申請容器,運行reduceTask。
11、ReducerTask想MapTask獲取相應分區的數據。
12、程序運行完畢後,MapReduce會向ResourceManager申請註銷自己。

四、Yarn的三種資源調度器:
1、FIFO Scheduler
FIFO Scheduler把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下一個分配,以此類推。
FIFO Scheduler是最簡單也是最容易理解的調度器,也不需要任何配置,但它並不適用於共享集羣。大的應用可能會佔用所有集羣資源,這就導致其它應用被阻塞。在共享集羣中,更適合採用Capacity Scheduler或Fair Scheduler,這兩個調度器都允許大任務和小任務在提交的同時獲得一定的系統資源。
在FIFO調度器中,小任務會被大任務阻塞。
2、Capacity Scheduler
而對於Capacity調度器,有一個專門的隊列用來運行小任務,但是爲小任務專門設置一個隊列會預先佔用一定的集羣資源,這就導致大任務的執行時間會落後於使用FIFO調度器時的時間。
3、Fair Scheduler
在Fair調度器中,我們不需要預先佔用一定的系統資源,Fair調度器會爲所有運行的job動態的調整系統資源。當第一個大job提交時,只有這一個job在運行,此時它獲得了所有集羣資源;當第二個小任務提交後,Fair調度器會分配一半資源給這個小任務,讓這兩個任務公平的共享集羣資源。

 

 

喜歡的朋友點點關注哦~~

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