2022-07-15 Yarn资源调度器配置

一、FIFO调度器

 单队列工作模式

二、容量调度器

1. 架构图

 

2. 特点

        (1) 多队列工作方式;

        (2) 当某一个队列的资源不够用(超过额定资源,没有达到最大资源)时,可以向其他队列借用资源。借用的资源+额定资源 <= 最大资源;

        (3) 当被借取资源的队列来了新的Job后而导致它资源紧张后,该队列会立刻回收借出去的资源,如果此时其他队列正在使用这些资源进行计算,会将进行计算的进程kill掉,拿回资源。

3. 配置步骤

        (1) 来到配置文件所在的目录中,打开配置文件 

cd $HADOOP_HOME/etc/hadoop
vim capacity-scheduler.xml

        (2) 修改默认配置

  <!--
	全局配置:yarn资源调度器能够缓存并且运行的最大Job数
  -->
  <property>
    <name>yarn.scheduler.capacity.maximum-applications</name>
    <value>10000</value>
    <description>
      Maximum number of applications that can be pending and running.
    </description>
  </property>

  <!--
	全局配置:跑AppMaster可以最多使用的资源占比,用来控制可以并行跑多少个AppMaster(多少个Job可以并行提交执行)
  -->
  <property>
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
    <value>0.1</value>
    <description>
      Maximum percent of resources in the cluster which can be used to run 
      application masters i.e. controls number of concurrent running
      applications.
    </description>
  </property>

  <!--
	全局配置:使用哪一个实现类来计算Container中的计算机资源
	DefaultResourceCalculator: 只算内存,不计算CPU
	DominantResourceCalculator: 既计算内存,也计算CPU
  -->
  <property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>
    <description>
      The ResourceCalculator implementation to be used to compare 
      Resources in the scheduler.
      The default i.e. DefaultResourceCalculator only uses Memory while
      DominantResourceCalculator uses dominant-resource to compare 
      multi-dimensional resources such as Memory, CPU etc.
    </description>
  </property>

  <!--
	全局配置:root队列下,含有哪些队列,队列和队列直接用逗号分割(root队列是根队列)
	注意:如果要添加自定义队列,必须先在这里指定
  -->
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>default,hello</value>
    <description>
      The queues at the this level (root is the root queue).
    </description>
  </property>

  <!-- 默认队列:default队列的配置 -->
  <!-- ********************************default********************************************** -->
  <!--
	root下的default队列的额定资源占比
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>40</value>
    <description>Default queue target capacity.</description>
  </property>

  <!--
	向root队列下的default队列提交Job的用户最多可以使用多少占比的队列资源,使用小数表示
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
    <value>1</value>
    <description>
      Default queue user limit a percentage from 0.0 to 1.0.
    </description>
  </property>

  <!--
	root队列下default队列的最大资源占比
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
    <value>60</value>
    <description>
      The maximum capacity of the default queue. 
    </description>
  </property>

  <!--
	root队列下的default队列是否启用
	RUNNING -> 启用
	STOPPED -> 禁用
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.state</name>
    <value>RUNNING</value>
    <description>
      The state of the default queue. State can be one of RUNNING or STOPPED.
    </description>
  </property>

  <!--
	哪些用户可以向root队列下的default队列提交任务
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
    <value>*</value>
    <description>
      The ACL of who can submit jobs to the default queue.
    </description>
  </property>

  <!--
	哪些用户可以管理(kill、...)向root队列下的defalut队列提交的Job
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
    <value>*</value>
    <description>
      The ACL of who can administer jobs on the default queue.
    </description>
  </property>

  <!--
	哪些用户可以在向root队列下的default队列提交Job的时候指定优先级
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.acl_application_max_priority</name>
    <value>*</value>
    <description>
      The ACL of who can submit applications with configured priority.
      For e.g, [user={name} group={name} max_priority={priority} default_priority={priority}]
    </description>
  </property>

  <!--
	root队列下default队列中Job的最长执行时间(类似于NameNode判断DataNode不可用所需的时间)
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.maximum-application-lifetime
    </name>
    <value>-1</value>
    <description>
       Maximum lifetime of an application which is submitted to a queue
       in seconds. Any value less than or equal to zero will be considered as
       disabled.
       This will be a hard time limit for all applications in this
       queue. If positive value is configured then any application submitted
       to this queue will be killed after exceeds the configured lifetime.
       User can also specify lifetime per application basis in
       application submission context. But user lifetime will be
       overridden if it exceeds queue maximum lifetime. It is point-in-time
       configuration.
       Note : Configuring too low value will result in killing application
       sooner. This feature is applicable only for leaf queue.
    </description>
  </property>

  <!--
	root队列下default队列中Job的默认执行时间(类似于每隔3秒,DataNode会向NameNode通信),
	如果超过该时间Job还没有执行完毕,不会丢掉该Job,只有当实际执行时间超过了
	yarn.scheduler.capacity.root.default.maximum-application-lifetime后,才会丢弃掉该Job
  -->
  <property>
    <name>yarn.scheduler.capacity.root.default.default-application-lifetime
    </name>
    <value>-1</value>
    <description>
       Default lifetime of an application which is submitted to a queue
       in seconds. Any value less than or equal to zero will be considered as
       disabled.
       If the user has not submitted application with lifetime value then this
       value will be taken. It is point-in-time configuration.
       Note : Default lifetime can't exceed maximum lifetime. This feature is
       applicable only for leaf queue.
    </description>
  </property>
  <!-- ********************************default********************************************** -->

        (3) 添加自定义hello队列的配置

  <!-- ********************************your queue define************************************ -->
  <!--
	root下的hello队列的额定资源占比
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.capacity</name>
    <value>60</value>
  </property>

  <!--
	向root队列下的hello队列提交Job的用户最多可以使用多少占比的队列资源,使用小数表示
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.user-limit-factor</name>
    <value>1</value>
  </property>

  <!--
	root队列下hello队列的最大资源占比
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.maximum-capacity</name>
    <value>80</value>
  </property>

  <!--
	root队列下的hello队列是否启用
	RUNNING -> 启用
	STOPPED -> 禁用
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.state</name>
    <value>RUNNING</value>
  </property>

  <!--
	哪些用户可以向root队列下的hello队列提交任务
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.acl_submit_applications</name>
    <value>*</value>
  </property>

  <!--
	哪些用户可以管理(kill、...)向root队列下的hello队列提交的Job
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.acl_administer_queue</name>
    <value>*</value>
  </property>

  <!--
	哪些用户可以在向root队列下的hello队列提交Job的时候指定优先级
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.acl_application_max_priority</name>
    <value>*</value>
  </property>

  <!--
	root队列下hello队列中Job的最长执行时间(类似于NameNode判断DataNode不可用所需的时间)
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.maximum-application-lifetime
    </name>
    <value>-1</value>
  </property>

  <!--
	root队列下hello队列中Job的默认执行时间(类似于每隔3秒,DataNode会向NameNode通信),
	如果超过该时间Job还没有执行完毕,不会丢掉该Job,只有当实际执行时间超过了
	yarn.scheduler.capacity.root.hello.maximum-application-lifetime后,才会丢弃掉该Job
  -->
  <property>
    <name>yarn.scheduler.capacity.root.hello.default-application-lifetime
    </name>
    <value>-1</value>
  </property>
  <!-- ********************************your queue define************************************ -->

        (4) 分发配置文件

xrsync.sh capacity-scheduler.xml

        (5) 在MR中指定提交hello队列

conf.set("mapreduce.job.queuename","hello");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
巨鲸任务调度平台为美柚大数据研发的分布式计算任务调度系统,提供Spark、Flink等批处理任务的DAG执行调度和流处理任务的状态监测调度,并具有重复应用检测、大内存应用检测等功能。 服务基于Spring Boot 2.0开发,打包后即可运行。 环境准备: Java 1.8+ Mysql 5.1.0+ 安装: 1、创建数据库:big-whale 2、运行数据库脚本:big-whale.sql 3、根据Spring Boot环境,配置相关数据库账号密码,以及SMTP信息 4、配置:big-whale.properties 配置项说明 ssh.user: 拥有脚本执行权限的ssh远程登录用户名(平台会将该用户作为统一的脚本执行用户) ssh.password: ssh远程登录用户密码 dingding.enabled: 是否开启钉钉告警 dingding.watcher-token: 钉钉公共群机人Token yarn.app-memory-threshold: Yarn应用内存上限(单位:MB),-1禁用检测 yarn.app-white-list: Yarn应用白名单列表(列表中的应用申请的内存超过上限,不会进行告警) 5、修改:$FLINK_HOME/bin/flink,参考:flink(因flink提交任务时只能读取本地jar包,故需要在执行提交命令时从hdfs上下载jar包并替换脚本中的jar包路径参数) 6、打包:mvn clean package 启动: 1、检查端口17070是否被占用,被占用的话,关闭占用的进程或修改项目端口号配置重新打包 2、拷贝target目录下的big-whale.jar,执行命令:java -jar big-whale.jar 初始配置 1、打开:http://localhost:17070 2、输入账号admin,密码admin 3、点击:权限管理->用户管理,修改当前账号的邮箱为合法且存在的邮箱地址,否则会导致邮件发送失败 4、添加集群 集群管理->集群管理->新增 “yarn管理地址”为Yarn ResourceManager的WEB UI地址 “程序包存储目录”为程序包上传至hdfs集群时的存储路径,如:/data/big-whale/storage “支持Flink任务代理用户”“流处理任务黑名单”和“批处理任务黑名单”为内部定制的任务分配规则,勿填 5、添加代理 集群管理->代理管理->新增 可添加多个实例(仅支持IP地址,可指定端口号,默认为22),执行脚本的时候会随机选择一个实例执行,在实例不可达的情况下,会继续随机选择下一个实例,在实例均不可达时执行失败 选择集群后,会作为该集群下提交Spark或Flink任务的代理之一 6、添加集群用户 集群管理->集群用户->新增 该配置的语义为:平台用户在所选集群下可以使用的Yarn资源队列(--queue)和代理用户(--proxy-user) 7、添加计算框架版本 集群管理->版本管理->新增 同一集群下不同版本的Spark或Flink任务的提交命令可能有所不同,如Spark 1.6.0版本的提交命令为spark-submit,Spark 2.1.0版本的提交命令为spark2-submit
Hadoop YARN是Hadoop的下一代集群资源管理系统,它将集群资源划分为容,通过资源调度来分配和管理这些容资源调度配置对于集群的性能和资源利用率至关重要。 首先,需要配置YARN调度类型。目前YARN支持两种调度:容量调度和公平调度。容量调度将集群资源按比例分配给不同的队列,每个队列有固定的资源容量;而公平调度资源动态分配给各个应用程序,根据应用程序的运行状况动态调整资源分配。 其次,需要配置队列的属性。队列属性包括队列名称、资源容量、资源限制等。资源容量指定了每个队列可以使用的最大资源数量,资源限制是为了避免某个队列占用过多资源而导致其他队列无法正常运行。 另外,还可以配置调度的策略。调度策略根据不同的需求来决定资源的分配方式,比如公平策略会尽量保持各个应用程序获得相同的资源量,而容量策略则会按照预先设定的比例分配资源。 此外,还需要配置队列的优先级。队列优先级可以保证某个队列在资源不足时获得更多的资源,以确保高优先级的应用程序能够正常运行。 最后,还可以配置一些其他参数,例如最大容数、最大AM资源比例等。这些参数可以根据具体的需求进行调整,以优化资源管理和调度效果。 总之,Hadoop YARN资源调度配置需要根据集群的实际情况和需求进行灵活的调整,以实现高效的资源管理和调度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值