YARN應該了解什麼

2021-10-05 10:29:02 字數 1398 閱讀 9697

提到大資料,就會想到分布式,那分布式包括分布式儲存和分布式計算,而計算就需要計算資源(cpu,記憶體,磁碟,網路),分布式計算就需要計算資源的統一管理和分配,yarn就起到了這樣的作用.

為了能夠對集群中的資源進行統一管理和排程,hadoop 2.0 引入了yarn,大大提高了集群的資源利用率,並提供了容錯,資源隔離及負載均衡等方面的支援.

yarn是在mrv1(mapreduce version 1)的基礎上演化而來的,這裡可以先簡單了解一下mrv1的侷限性:

可靠性差:mrv1採用ms結構,但master存在單點故障問題

擴充套件性差:jobtracker 同時兼備了資源管理和作業控制倆個功能

資源利用率低:mrv1採用了基於槽位的資源分配模型,常常導致資源閒置

無法支援多種計算框架:只支援基於磁碟的離線計算mapreduce

隨著網際網路發展和實際需求,apache對其進行公升級改造,從而出現mrv2,即後來通用的資源管理系統yarn.

nodemanager

每個節點上的資源管理器,定時向rm匯報本節點上資源使用情況和各個container的執行狀態,接受來自am的任務啟停請求.

container

基本分配資源單位,是對應用程式執行環境的抽象,並為應用程式提供資源隔離環境.

當使用者向yanr提交乙個應用程式後,yarn分為倆個階段執行該應用程式,一是啟動am,二是由am建立應用程式,為它申請資源,並監控整個執行過程直至成功.

提交應用程式:使用者通過客戶端與yarn rm通訊提交程式,程式中包含可執行**,資源需求,優先順序,佇列資訊等.

啟動am:rm為該應用程式分配第乙個container,並於對應的nm通訊,要求它在這個container啟動am,之後am的生命週期被rm管理.

am註冊:am啟動後,會向rm(應用管理器)註冊,然後重複4-7.

資源獲取:am 採用輪詢方式通過rpc協議向rm申請和領取資源 .

請求啟動container:am一旦申請到資源,會與對應的nm通訊,請求啟動任務,nm會將任務放到container.

啟動container:nm為任務設定好執行環境(包括環境變數,jar包,二進位制程式等)後,將啟動任務命令寫到乙個指令碼中,通過containerexecutor執行該指令碼啟動任務.

container監控:am獲取各個container的執行狀態以便任務失敗時重啟

登出am:任務結束,am向rm登出,退出執行

yarn的排程器後續會做詳細介紹

hadoop之 yarn (簡單了解)

yarn通過兩個 守護執行緒提供核心服務 resourcemanager,管理集群所有資源的切分以及作業的排程與監控 nodemanager,執行在集群所有節點上,啟動並監控容器的執行狀況,並負責向resourcemanager匯報。在linux上,hadoop是通過cgroup技術實現contai...

應該了解的web設計

在 stackexchange 上有人問了這樣乙個問題 what should every programmer know about web development?關於 web 開發,什麼是所有程式設計師需要知道的?裡面給出的答案非常不錯,所以,我翻譯 過來。順便說一下,stackexchang...

大資料 由點入麵了解Yarn

使用者提交的每個應用程式均包含1個am,主要功能包括 與rm排程器協商以獲取資源 用container表示 將得到的任務進一步分配給內部的任務 與nm通訊以啟動 停止任務 監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務。3.nodemanager nm nm是每個節點上的資源和...