Hadoop1.0的时候是没有YARN,MapReduce1.X存在的问题:单点故障&节点压力大不易扩展node
JobTracker:负责资源管理和做业调度
TaskTracker:按期向JobTracker汇报本节点的健康情况、资源使用状况以及做业执行状况;架构
接收来自JobTracker的命令,例如启动任务或结束任务等。框架
这种架构的缺点也很明显oop
上图能够看到,Hadoop集群在忙的时候Spark就比较闲,Spark集群比较忙的时候Hadoop集群就比较闲,而MPI集群则是总体并非很忙。这样就没法高效的利用资源,由于这些不一样的集群没法互相使用资源。orm
而YARN就能够令这些不一样的框架运行在同一个集群上,并为它们调度资源。xml
XXX on YARN:与其余计算框架共享集群资源,按资源须要分配,进而提升集群资源的利用率。blog
XXX:Spark/MapReduce/Storm/Flink进程
1 ResourceMananger:RM资源
整个集群提供服务的RM只有一个(生产中有两个,一个主,一个备),负责集群资源的统一管理和调度。it
处理客户端的请求:提交一个做业、杀死一个做业。
监控NM,一旦某个NM挂了,那么该NM上运行的任务须要告诉AM如何进行处理。
2 NodeManager:NM
整个集群中有多个,负责本身自己节点资源管理和使用。
定时向RM汇报本节点的资源使用状况。
接收并处理来自RM的各类命令:启动Container等。
处理来自AM的命令。
单个节点的资源管理。
3 ApplicationMaster:AM
每个应用程序对应一个:MR、Spark,负责应用程序的管理。
为每一个应用程序向RM申请资源(core、memory),分配给内部task。
须要与NM通讯:启动/中止task,task是运行在Container里面,AM也是运行在Container里面。
4 Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象。
5 Client
提交做业。
查询做业的运行进度。
杀死做业。
1 yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2 mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3 启动YARN相关的进程
sbin/start-yarn.sh
4 验证
jps
ResourceManager
NodeManager
http://192.168.56.102:8088/
5 中止YARN相关的进程
sbin/stop-yarn.sh