YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成;
ResourceManager(RM):整个集群资源的分配者
1.处理Client请求;(客户端提交Job)
2.监控NodeManager;
3.启动appMaster;
4.资源的分配与调度:即可以将比较紧张的节点的任务,发给比较闲的节点
NodeManager (NM):单间点资源分配者
1.管理节点上的资源
2.处理来自ResourceManager的命令
3.处理来自appMaster的命令
一个NodeManager可以有多个contanier;
NodeManager会和ResourceManger进行心跳, 这样ResourceManger就知道每个NM的资源状况, 当有container的申请的时候就会找对应的NodeManager去分配container, 其顺序为:
1.data所在的NM优先
2.如果1没有, 那么找同一个机架 (rack)上的NM
3.如果1,2 都没有, 那么就在集群上面随机寻找一个
ApplicationMaster(AM):单个job任务的资源分配者
1.为应用程序分配资源
2.任务监控与容错
ApplicationMaster是单个任务的老大,需要运行任务时,Appmaster会向ResourceMnager申请资源。如果第一个节点的资源不够,可以由ResourceMnager分配其他节点的资源供第一个节点的任务去运行。
监控与容错:ApplicationMaster会监控MapTask和ReduceTask
NodeManager上面会运行AppMaster, 其实ApplicationMaster就是一个特殊的Container, Job提交后会先创建一个ApplicationMaster的container, 之后通过这个ApplicationMaster Container去协调整个Job的运行。
137