http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html Apache Hadoop YARN YARN的主要功能包括:資源管理和任務調度及監控,它們各自都是獨立的守護進程。要實現這個目標,必須有一個全局 ...
http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
Apache Hadoop YARN
YARN的主要功能包括:資源管理和任務調度及監控,它們各自都是獨立的守護進程。要實現這個目標,必須有一個全局的資源管理器和每個應用都有一個ApplicationMaster(AM)。應用可以是單個job,也可以是DAG jobs。
ResourceManager和NodeManager組成數據計算框架。ResourceManager對系統中所有應用的資源擁有最終仲裁權。NodeManager對容器負責,監控它們的資源使用情況,並且將其報告給ResourceManager。
每個應用都有一個ApplicationMaster,它負責向ResourceManager申請資源,並且和NodeManager一起指向和監控任務。
在這幅圖中,有兩個客戶端都提交了任務,可以看到NodeManager向ResourceManager報告,ApplicationMaster向Resource申請資源並且監控任務執行。
ResourceManager有兩個主要的組件:Scheduler和ApplicationManager
Scheduler負責分配資源
ApplicationManager負責接受提交的任務,並且分配第一個container為了執行特定的ApplicationMaster。每個應用的ApplicationMaster負責向Scheduler申請適量的資源,並且跟蹤資源的狀態和監控進度。
總結一下:
1、ResourceManager包括Scheduler和ApplicationManager
2、ResourceManager負責集群中所有應用的資源分配(資源包括記憶體、CPU、磁碟、網路等等)
3、Scheduler只是一個單純的調度器,負責給不同的應用分配資源
4、每個應用都有一個ApplicationMaster,它負責向ResourceManager申請資源,並且跟蹤資源的使用情況還有任務的執行情況
5、NodeManager負責運行並且管理本節點的容器(資源)。AppMaster指定容器來運行任務。(也就是說任務是在容器中運行的)
所以,任務的執行是這樣的:
1、客戶端提交任務到ResourceManager
2、ApplicationManager接收任務,並且指定一個NodeManager給它分配第一個資源(container)用戶執行ApplicationMaster
3、NodeManager啟動一個ApplicationMaster
4、AppicationMaster向ResourceManager申請資源(PS:其實是向Scheduler申請),並且監控資源的使用情況,監控任務的執行進度
5、任務開始執行
總的來說,AppMaster負責協調並監控資源,NodeManager負責管理本地資源,啟動/停止任務
參考
http://blog.csdn.net/liuwenbo0920/article/details/43304243
http://blog.csdn.net/paicMis/article/details/53890676
https://www.cnblogs.com/chushiyaoyue/p/5784871.html