YARN资源调度

本文详细介绍了MapReduce Job的提交过程,深入解析了YARN的工作机制,包括任务提交、资源申请、Task执行等步骤。同时,探讨了YARN中的FIFO、Capacity Scheduler和Fair Scheduler三种调度策略及其特点。最后,讨论了如何配置自定义队列,重点讲解了在capacity-scheduler.xml文件中设置队列资源分配的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. MR中的一个Job是如何提交的?

首先我们要先判断当前Job的状态是否为定义阶段, 如果是我们提交一个submit()方法, 然后我们需要确认当前Job的状态, 新老API是否兼容, 接着我们就开始连接集群, 如果我们连接的是本地模式结果就是LocalRunner, 如果连接的是Yarn集群结果就是YARNRuuner; 在提交Job之前需要检验一下输入输出路径是否合法, 并且给当前的Job计算一下切片信息, 然后添加一下分布式缓存文件, 将所有必要的内容都拷贝到job执行的临时目录,比方说一些jar包啊, 切片信息还有配置文件; 最后开始提交Job

2. 描述一下YARN的工作机制。

首先MR程序提交到客户端所在的节点,YarnRunnable向RM申请一个Application, RM向YarnRunnable返回Application的提交路径及其application_id, 紧接着YarnRunnnable提交job运行所需要的资源到HDFS上, 在job.submit()运行后会生成一系列的文件. 在资源提交完毕之后, 向RM申请运行MRApplication, 然后RM将用户的请求初始化程一个Task, Task随即进入FIFO调度队列, 再接着NodeManager领取到Task任务, 创建Container容器并产生MRAppmaster, 将job资源从HDFS下载到本地, NodeManager向RM申请运行MapTask, RM将MapTask分配给其他两个NodeManager, 另外两个NodeManager领取到任务后继续创建Container容器运行MapTask, 根据MR发送的程序启动脚本运行任务, 分别启动MapTask对数据进行分区排序, 完成这些后, NodeManageer继续向RM申请2个容器, 运行ReduceTask程序, Reduce向Map获取相应分区的数据, 最后程序运行完毕之后, MR会向RM注销自己.

3. YARN中有几种资源调度实现策略?分别阐述一下各自的特点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值