5 YARN

一、YANR 架構

在這裏插入圖片描述
圖中一共有 2 大塊元素,一塊是 ResourceManager,一塊是 NodeManager 。

ResourceManager: 可以看到,ResourceManager 是負責資源的管理與調度,再加上一個啓動 ApplicationMaster,注意:這裏的調度是純粹的資源調度,不涉及任務調度,任務調度應該是在 AM 中完成的。

​ **NodeManager:**NodeManager 是單臺節點上的資源和任務管理器,在 NodeManager 上面完成計算功能。

​ **ApplicationMaster:**負責向 RM 申請資源,啓動、監控任務,是 NodeManager 和 ResourceManager 之間的橋樑,避免它兩之間通信可以做到解耦。當用戶向 ResourceManager 提交任務後,RM 會首先找到可用的 NM,在其中分配一個 Container,在其中啓動 AM,。

Container: Container 是資源的抽象,就像我們 Windows 系統中的虛擬機,虛擬機可以利用 Windows 的資源,然後再這個資源上可以啓動 Linux 或者 Mac,同樣,在 YARN 中的Container 中,我們也可以啓動 MapReduce 或者 Spark 的任務。

​ 要理解這些元素的作用是什麼,主要還是得理解整個框架的工作流程。

​ 綜上,YARN 做到了解耦合,我們隨便上來一個計算框架,只要把自己的任務調度器加進來,然後把 Task 換成自己對應的 Task 即可。

二、YARN 的資源調度模型

2.1 Capacity 調度

在這裏插入圖片描述

​ Capacity 是以隊列爲單位劃分資源的,每個隊列預先設定一定比例的資源最低保證和使用上限,每個用戶提交任務時,yarn 首先判斷哪個隊列的資源利用率最低,就把這個任務分配到了該隊列;當一個隊列中的資源有剩餘時,可以先把資源借給其它隊列,當自己要用的時候,其它隊列就會釋放資源後歸還給該隊列。

2.2 Fair 調度

在這裏插入圖片描述

​ 公平調度器是以整個集羣的資源爲劃分單位的,如:現有 A,B 兩個用戶,A 用戶先提提交了一個任務 A1,這時 A1 將可以使用集羣的全部資源,它所用的資源用 queueA 來表示;後來用戶 B 也提交了一個任務 B1,此時基於公平, A1 和 B1 平分資源,各使用 50% 的資源,B1 所佔的隊列稱爲 queueB;再後來,用戶 B 又提交了任務 B2,此時 B2 和 B1 共同使用 queueB 中的資源,它們各佔 queueB 資源的 50%,各佔整個集羣資源的 25%。

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