1.YARN的架构
Hadoop在2.0版本上推出了YARN (Yet Another Resource Negotiator)。YARN的核心思想是将资源管理和Job的调度/监控进行分离。YARN的架构如下图所示。

YARN的核心组件可以分为两大部分:
1.1YARN服务组件
- YARN 总体上仍是Master/Slave 结构 在整个资源管理框架中ResourceManager 为master ,NodeManager 为Slave 。
- ResourceManager 负责 对各个NodeManager 上的资源进行同一的管理和调度
- 当用户提交一个应用程序时,需要一个用以跟踪和管理这个程序的服务
- ApplicationMaster 它负责向ResourceManager 申请资源,并要求Node Manager 启动可以占用一定资源的任务
- 由于不同的ApplicationMaster 被分布到不同的节点上,因此他们之间不会互相影
1.2ResourceManager
全局资源管理器整个集群只有一个,负责集群资源的同一管理和调度分配。
功能:
- 处理客户端请求
- 启动/监控 ApplicationMaster
- 监控NodeManager
- 资源调度与分配
1.3.NodeManager
整个集群有多个负责单节点资源管理和使用
功能:
- 单个节点上的资源管理和任务管理
- 处理来自ResourceManager 的命令
- 处理来自ApplicationMaster 的命令
- NodeManager 管理抽象容器这些容器代表着可供一个特定应用程序使用的针对每个节点的资源
- 定时地向RM汇报本节点的资源使用情况和各个Container 的运行状态
1.4ApplicationMaster
- 管理一个在YARN内运行的应用程序的每个实例
- 功能:
1. 数据切分
2. 为应用程序申请资源
3. 任务监督和容错 - 负责协调来自ResourceManager 的资源 ,开通过NodeManager 监视容器的执行和资源的使用(CPU,内存等等的资源分配)
1.5Container
YARN 中的资源抽象,封装某个节点上的多维度资源,入内存,CPU,磁盘,网络等当AM向RM 申请资源时,RM向AM 返回的资源便是用container 表示的,YARN 会为 每个任务分配一个Container ,且该任务 只能使用该Container 中描述的资源,
功能:
1. 对任务运行环境的抽象
2. 描述一系列 信息
3. 任务运行资源(节点,内存,CPU)
4. 任务启动命令
5. 任务运行环境
2YARN提交任务流程

1.客户端向ResourceManagement 提交 运行的请求 (hadoop jar xxxx.jar)
2.ResourceManager进行检查,没有问题的时候,向客户端返回一个共享资源的路径以及JobId
3.客户端向HDFS提交资源,将共享资源放入共享路径下:(/tmp/hadoop-yarn/staging-dir/xxxxxxxx)
4.客户端向ResourceManager反馈共享资源放置完毕,进行job的正式提交
5.ResourceManager为这个job分配一个节点,并在这个节点上启动MRAppMaster任务
6.ResourceManager到对应的节点上去启动container容器用于装载MRAppMaster
7.MRAppMaster对job进行初始化,生成一个job工作簿,job的工作簿记录着maptask和reduce的运行进度和状态
8.MRAppMaster向ResourceManager申请maptask和reducetask的运行的资源,先发maptask然后发reducetask
9.ResourceManager向MRAppMaster返回maptask和reduce的资源节点

来源:CSDN
作者:浮生若梦1379
链接:https://blog.csdn.net/weixin_37796929/article/details/103486504