YARN:
Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。
YARN的運行流程:

YARN 主要由ResourceManager、NodeManager、ApplicationMaster、container等幾部分組成。YARN總體上是Master/Slave結構,在整個資源管理框架中,ResourceManager為Master,NodeManager為Slave,ResourceManager負責對各個NodeManager上的資源進行統一管理和調度。當用戶提交一個應用程序時,需要提供一個用以跟蹤和管理這個程序的ApplicationMaster,它負責向ResourceManager申請資源,並要求NodeManger啟動可以占用一定資源的任務。由於不同的ApplicationMaster被分布到不同的節點上,因此它們之間不會相互影響。

服務功能
ResouceManager:
1、處理客戶端的請求
2、啟動和監控ApplicationMaster
3、監控nodemanager
4、資源的分配和調度
Nodemanager
NM是每個節點上的資源和任務管理器,它會定時向RM匯報本節點的資源使用情況和各個Container的運行狀態,它還接收並處理來自AM的Container啟動/停止等請求
1、處理單個節點的資源管理
2、處理來自ResouceManager的命令
3、處理來自ApplicationMaster的命令
ApplicationMaser
用戶提交的每一個應用程序都包括一個AM,AM主要有以下功能:
1.與RM協調器協商以獲取資源(用Container表示);
2.將得到的任務進一步分配給內部任務;
3.與NM通信以啟動/停止任務;
4.監控任務的狀態,並在任務失敗時重新為任務申請資源以重啟任務。
Container
對多任務運行環境的抽象,包括CPU、內存等多維度資源以及環境變量、啟動命令等任務運行的相關環境
運行流程
1、客戶端向RM中提交程序
2、RM向NM中分配一個container,並在該container中啟動AM 3、AM向RM注冊,這樣用戶可以直接通過RM査看應用程序的運行狀態(然后它將為各個任務申請資源,並監控它的運行狀態,直到運行結束)
4、AM采用輪詢的方式通過RPC協議向RM申請和領取資源,資源的協調通過異步完成
5、AM申請到資源后,便與對應的NM通信,要求它啟動任務 6、NM為任務設置好運行環境(包括環境變量、JAR包、二進制程序等)后,將任務啟動命令寫到一個腳本中,並通過運行該腳本啟動任務 7、各個任務通過某個RPC協議向AM匯報自己的狀態和進度,以讓AM隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務
8、應用程序運行完成后,AM向RM注銷並關閉自己
關閉historyserver
mr-jobhistory-daemon.sh stop historyserver
yarn application操作命令
1、-list 列出所有 application 信息,
示例:
yarn application -list
2、-appStates
所有狀態:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED
示例:
yarn application -list -appStates RUNNING
3、-appTypes
如 MAPREDUCE
示例:
yarn application -list -appTypes MAPREDUCE
4、-kill
示例:
yarn application -kill application_1526100291229_206393
5、-status
示例:
yarn application -status application_1526100291229_206393
6、-movetoqueue
7、-queue
示例:
yarn application -movetoqueue application_1526100291229_206393 -queue other
