Yarn的组件详细介绍以及任务提交流程

311 阅读2分钟

1. Yarn不同版本的介绍

在Hadoop1.x版本中,主从架构

JobTracker:主节点,是整个计算机程序的老大,资源调度,并且是随机调度的,监控程序的运行状态,启动运行状态,但是JobTracker存在单点故障的问题

TaskTracker:从节点,负责计算程序的执行,强行的将计算资源分成两部分,mapslot、reducesolt,并且每一部分资源只能跑对应的任务

存在的缺点:

  • 单点故障
  • 资源调度随机,会造成资源浪费
  • JobTracker的压力运行过大

在Hadoop2.x版本中,MapReduce只负责计算,而Yarn专门负责程序的资源调度。

Yarn集群从从来的MapReduce框架中独立出来的重要原因:

  • 1、功能模块化
  • 2、抢占市场份额

Yarn独立出来,Yarn集群上能够运行除了MR之外的其它各种符合Yanr规范的分布式计算程序

2. Yarn的组件详细介绍

ResourceManager:

  • 整个资源调度的老大
  • 接收客户端的请求--->运行程序的请求
  • 接收NodeManager的状态报告,包括NodeManager的资源状态和存活信息
  • 负责整个计算程序的资源调度,调度的是运行资源和节点

NodeManager:

  • 接收ResourceManager的命令
  • 提供资源运行计算程序
  • NodeManager相当于HDFS的DataNode
  • Hadoop中的工作角色都会向管理者通过心跳报告汇报自己的状态信息

MRAppMaster:

  • 单个计算程序的老大,主要负责当前计算程序向ResourceManager申请资源
  • 负责启动MapTask和ReduceTask任务
  • 负责监控MapTask和ReduceTask的运行进度
  • 类似于项目经理

ASM:所有应用程序的管理者,调度你的应用程序

Container:

  • 抽象的资源容器,封装这一定的CPU、IO、网络等资源
  • 是MapTask和ReduceTask的运行资源单位
  • 1个split(切片)--->1个MapTask--->1个Container--->YarnChild
  • 衡量集群资源的单位:Container的个数

3. Yarn的任务提交流程

1、客户端提交MapReduce程序到ResourceManager

2、ResourceManager接收到MR程序后,会寻找一个合适的节点去其中MRAppMaster

3、MRAppMaster负责解析MR程序,负责启动多少个MapTask和ReduceTask,数据源在哪里,数据输出目录又是哪里

4、MRAppMaster解析MR之后,会向ResourceManager申请相对应的资源单位-Container,一个Container对应一个task任务

5、MRAppMaster发送相应的计算程序,发送命令让NodeManager启动MR程序的计算