YARN产生背景
Hadoop1.x时:
- MapReduce: Master/Slave架构,1个JobTracker带多个TaskTracker
JobTracker:
负责资源管理和做业调度node
TaskTracker:
- 按期向JT汇报本节点的健康情况、资源使用状况、做业执行状况;
- 接收来自JT的命令: 启动任务/杀死任务
YARN:
不一样计算框架能够共享同一个HDFS集群上的数据,享受总体的资源调度bash
XXX ON YARN的好处:
与其余计算机框架共享集群资源,按资源须要分配,进而提升集群资源的利用率架构
XXX: Spark/Storm/Flink 框架
YARN 架构
1RM + N个NM oop
- ResourceManager(RM): 整个集群同一时间提供服务(active状态)的RM只有一个,负责集群资源的统一管理和调度
- 提交一个做业、杀死一个做业
- 处理客户端的请求(启动/杀死):
- 监控咱们的NM,一旦某个NM挂了,那么该NM上运行的任务须要告诉咱们的AM来如何进行处理
- NodeManager(NM):整个集群中有N个负责单个节点的资源管理和使用以及task的运行状况
- 整个集群中有多个,负责本身自己节点资源管理和使用
- 定时向RM汇报本节点的资源使用状况
- 接收并处理来自RM的各类命令: 启动Container
- 处理来自AM的命令
- 单个节点的资源管理
- ApplicationMaster(AM):每一个应用/做业对应一个,负责应用程序的管理
- 每一个应用程序对应一个: MR、Spark,负责应用程序的管理
- 为应用程序向RM申请资源(core、memory),分配给内部task
- 须要与NM通讯: 启动/中止task,task是运行在container里面,AM也是运行在containe
- Container
- 封装了CPU、Memory等资源的一个容器
- 是一个任务运行环境的抽象
- Client
- 提交做业
- 查询做业的运行进度
- 杀死做业
YARN 执行流程
- 用户向YARN提交一个做业(例如Spark/Storm做业)
- ResourceManager会给做业分配第一个Continer,假设运行在图中第二个NodeManager
- ResourceManager与对应NodeManager进行通讯,要求启动对应的Continer用来启动应用程序,ApplicationMaster
- ApplicationMaster启动后,与ResourceManager获取资源并进行注册
- ApplicationMaster向ResourceManager申请Core,Memory,而后在对应的NodeManager上开始启动任务
- 在每一个NodeManager上启动相应的continer,并把task运行在Continer
YARN 环境搭建
1.etc/hadoop/mapred-site.xml:spa
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
复制代码
2.etc/hadoop/yarn-site.xml:code
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
复制代码
3.启动YARN相关的进程orm
sbin/start-yarn.shcdn
4.验证xml
jps
http://host:8088