Yarn的调度器

一、调度器

1.调度器的分类

FIFO、Capacity Scheduler 和 Fair Scheduler

yarn-default.xml

<property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

1.1 FIFO调度器

在这里插入图片描述
​ 特点:单队列,先到先服务

​ 弊端: 如果队首有一个资源需求大的Job,所需的资源没有得到满足!此时后续的Job都需要等待!

​ 资源利用率低!

1.2 容量调度器

在这里插入图片描述

​ 特点: 容量。集群资源利用率高!满足不同类型Job和用户的需求!默认调度器!

  • ​ 每个队列可以设置占用集群资源容量的最低和最高限制
  • ​ 限制每个用户或每个Job使用资源的限制
  • ​ 队列中多余的资源可以匀给其他队列使用

多个队列!队列内部FIFO(先到先服务)

测试:

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /mapjoin /output2

默认情况提交时,所有的Job都会提交到default,取决于mapred-default.xml

mapreduce.job.queuename=default

设置容量调度器为多个队列:

​ 修改$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml

​ 不需要重启YARN,执行

yarn rmadmin -refreshQueues

提交Job到不同的队列:

hadoop jar hadoop-mapreduce-examples-2.7.2.jar  wordcount -Dmapreduce.job.queuename=a /input /output

1.3 公平调度器

在这里插入图片描述
在这里插入图片描述

​ 公平调度器是在容量调度器的基础上开发的!

​ 区别:调度的策略不同! 容量调度器在队列内部FIFO进行调度!

​ 公平调度器,基于最大最小公平算法,默认基于内存进行计算,为当前队列中所有的待运行的Job,

​ 平均地分配资源!

​ 特点: 同一个队列中,小的Job占优势,可以快速地完成,大的job不至于饿死!

二、配置多队列的容量调度器

默认Yarn的配置下,容量调度器只有一条Default队列。在capacity-scheduler.xml中可以配置多条队列,并降低default队列资源占比:

 	<property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>default,hive</value>
    <description>
      The queues at the this level (root is the root queue).
    </description>
  </property>
	<property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>40</value>
  </property>

# 同时为新加队列添加必要属性:
	<!--队列目标资源百分比,所有队列相加必须等于100-->
<property>
    <name>yarn.scheduler.capacity.root.hive.capacity</name>
    <value>60</value>
  </property>
	<!--队列最大资源百分比-->
  <property>
    <name>yarn.scheduler.capacity.root.hive.maximum-capacity</name>
    <value>100</value>
  </property>
	<!—单用户可用队列资源占比-->
  <property>
    <name>yarn.scheduler.capacity.root.hive.user-limit-factor</name>
    <value>1</value>
  </property>
	<!--队列状态(RUNNING或STOPPING)-->
  <property>
    <name>yarn.scheduler.capacity.root.hive.state</name>
    <value>RUNNING</value>
  </property>
	<!—队列允许哪些用户提交-->
  <property>
    <name>yarn.scheduler.capacity.root.hive.acl_submit_applications</name>
    <value>*</value>
  </property>
	<!—队列允许哪些用户管理-->
	<property>
    <name>yarn.scheduler.capacity.root.hive.acl_administer_queue</name>
    <value>*</value>
  </property>


yarn rmadmin -refreshQueues 不需要重启直接执行此命令

效果如下图:
在这里插入图片描述

三、推测执行

1.数据倾斜

MapTask端的数据倾斜: 由切片不均匀造成!

ReduceTask端的数据倾斜: 由分区不均匀造成!

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值