hadoop--Yarn资源调度器的基础架构、工作机制 与 作业提交全过程

本文深入介绍了YARN(Yet Another Resource Negotiator)的资源调度器机制,详细阐述了YARN的基础架构,包括ResourceManager、NodeManager、ApplicationMaster和Container的角色。同时,解析了MapReduce作业在YARN上的提交全过程,从作业提交、初始化、任务分配到任务运行的每个步骤,展示了HDFS、YARN和MapReduce三者之间的交互。此外,还涵盖了作业进度和状态更新以及作业完成后的清理过程。

一、Yarn资源调度器

⭐️:YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于操作系统上的应用程序

作用:
YARN负责管理集群资源;
负责给任务合理分配资源。

Yarn 基础架构

YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
请添加图片描述

二、YARN工作机制

请添加图片描述

  1. MR程序提交到客户端所在的节点;
  2. YarnRunner向ResourceManager申请一个Application;
  3. RM将该应用程序的资源路径返回给YarnRunner;
  4. 该程序将运行所需资源提交到HDFS上;
  5. 程序资源提交完毕后,申请运行MrAppMaster;
  6. RM将用户的请求初始化成一个Task;
  7. 其中一个NodeManager领取到Task任务;
  8. 该NodeManager创建容器Container,并产生MrAppMaster;
  9. Container从HDFS上拷贝资源到本地;
  10. MrAppMaster向 RM申请运行MapTask资源;
  11. RM将运行MapTask任务分配给另外2x NodeManager,另外2x NodeManager分别领取任务并创建容器;
  12. MR向2x接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序;
  13. MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask;
  14. ReduceTask向MapTask获取相应分区的数据;
  15. 程序运行完毕后,MR会向RM申请注销自己。

三、作业提交全过程

1. HDFS、YARN、MapReduce三者关系

在这里插入图片描述

2. 作业提交过程(YARN)

在这里插入图片描述

3. 作业提交过程(HDFS & MapReduce)

在这里插入图片描述
HDFS的读写数据流程==>

作业提交全过程:

  • 一、作业提交
  1. Client调用job.waitForCompletion()方法,向整个集群提交MapReduce作业;
  2. Client向RM申请一个作业id;
  3. RM给Client返回该job资源的提交路径和作业id;
  4. Client提交jar包、切片信息和配置文件到指定的资源提交路径;
  5. Client提交完资源后,向RM申请运行MrAppMaster;
  • 二、作业初始化
  1. 当RM收到Client的请求后,将该job添加到容器调度器中;
  2. 某一个空闲的NM领取到该job;
  3. 该NM创建Container,并产生MrAppMater;
  4. Container从HDFS上下载Client提交的资源到本地;
  • 三、任务分配
  1. MrAppMater向RM申请运行多个MapTask任务资源;
  2. RM将运行MapTask任务分配给另外2x NodeManager,另外2x NodeManager分别领取任务并创建容器;
  • 四、任务运行
  1. MR向 2x 接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序;
  2. MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask;
  3. ReduceTask向MapTask获取相应分区的数据;
  4. 程序运行完毕后,MR会向RM申请注销自己。
  • 五、进度和状态更新

YARN中的任务将其进度和状态(包括counter)返回给应用管理器,客户端每秒(通过 mapreduce.client.progressmonitor.pollinterval 设置)向应用管理器请求进度更新,展示给用户。

  • 六、作业完成✅

除了向应用管理器请求作业进度外,客户端每5秒都会通过调用waitForCompletion()方法来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval 来设置。作业完成之后,应用管理器和Container会清理工作状态,作业的信息会被历史服务器存储以备后续用户核查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值