hadoop集羣資源管理系統YARN以及YARN的運行原理

一.簡介:

YARN (Yet Another Resource Negotiator)

1.  (官網解釋)最基本的思想是紗線拆分功能的資源管理與作業調度/監控到單獨的進程。具體設想是全球(ResourceManagerRM)和每應用程序(applicationmasterAM)。應用程序是一個單一的DAG或作業的作業。

2.在hadoop 1.x中jobtracker負責作業的調度(將任務與tasktracker匹配)和任務進度監控(跟蹤任務,重啓失敗或延遲的任務;記錄任務流水,如維護計數器的計數)而到了hadoop2.x中 出現了yarn這一獨立的服務來專門管理這些,大體結構如下

二.yarn的架構

當我們在搭建好的集羣中運行hdfs和yarn的時候jps查看進程發現(見下圖)

我們發現 其中ResourceManager運行在主節點master上而nodemanager運行在從節點datanode上,所以我們可以理解爲它的設計思想跟namenode與datanode的關係有些相似 可以理解爲從中央到地方之間的關係,中央管理着地方,地方想要做什麼要跟中央去申請。下邊我來具體介紹一下這些進程

1.ResourceManager:
    資源管理器,是yarn的主要進程,主要負責資源的管理、分配以及資源的調度。
    主要有以下組成:
    1)applicationmanager:主要進行資源的管理和分配,主要和applicationMaster進行交互。
    2)scheduler:資源調度器,主要負責application資源調度。
        1)FIFO調度:先進先出,以隊列的方式進行APP的排序。
        2)容量調度:將資源分配爲多個子隊列,進行資源調度。現有版本,默認採用容量調度機制。
        3)公平調度:公平調度資源
2.NodeManager:
    節點管理器,主要負責具體資源的分配,和Resourcemanager進行交互,彙報資源狀態等。
    創建Container容器。一個nodemanager節點會分配多個Container,一個Container不會跨多個nodemanager。
    1秒鐘和RM進行交互一次。
3.Container:
    容器。用於指定一個資源的分配。
    理念:管理相關的服務器資源,主要包括:CPU,內存(現有版本)
          期望:CPU,內存,磁盤,IO,帶寬。
4.applicationMaster:
    應用管理者。提交一個job,只有一個AM,主要負責監控當前作業運行狀態,和RM交互,彙報作業情況以及資源的使用情況。
三.運行機制

見下圖:

1.用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啓動ApplicationMaster的命令、用戶程序等

2.ResourceManager爲該應用程序分配第一個Container,並與對應的Node-Manager通信,要求它在這個Container中啓動應用程序的ApplicationMaster。

3.ApplicationMaster首先向ResourceManager註冊,這樣用戶可以直接通過ResourceManager查看應用程序的運行狀態,然後它將爲各個任務申請資源,並監控它的運行狀態,直到運行結束,ApplicationMaster採用輪詢的方式通過RPC協議向ResourceManager申請和領取資源

4.一旦ApplicationMaster申請到資源後,便與對應的NodeManager通信,要求它啓動任務NodeManager爲任務設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啓動命令寫到一個腳本中,並通過運行該腳本啓動任務各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啓動任務在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態

5.應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉自己

四.MapReduce1(hadoop1.x的jobtracker)與yarn的比較

與MapReduce1相比 YARN可以在更大規模的集羣上運行。當節點數達到4000,任務數達到40000時 MapReduce會遇到可拓展瓶頸,瓶頸源自於jobtracker必須同時管理作業和任務這樣一個事實,YARN利用其資源管理器和application master分離的架構優點克服了這個侷限性,可以拓展到面向將近10000個節點和100000個任務(此段話是hadoop權威指南摘要)


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