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程序的计算