2.Yarn基础_工作原理

本文详细介绍了YARN的工作流程,包括Client提交应用程序、ResourceManager分配Container、ApplicationMaster的运行等。接着,讨论了YARN的调度策略,如容器调度和公平调度的配置与原理。最后,讲解了ResourceManager的高可用性(HA)设计,包括故障转移和配置方法。
摘要由CSDN通过智能技术生成

一.Yarn调度流程

1.Client向YARN提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

2.ResourceManager为Job分配第一个Container,并与Container所在的NodeManager通信,要求NodeManager在这个Container中启动该作业的ApplicationMaster。

3.NodeManager启动一个Container运行ApplicationMaster。

4.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询该作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态。如果Container没有完全申请到位,则会先使用已经分配到位的部分Container资源进行后续的(5,6,7)步骤,其余Container部分由ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和领取资源,直到全部资源分配到位。

5.一旦ApplicationMaster申请到Container资源后,便与资源所在的NodeManager通信,要求NodeManager启动任务。6.NodeManager执行ApplicationMaster发送的命令,启动Container任务。

7.各个Container通过RPC向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。

8.作业完成后,ApplicationMaster向ResourceManager申请注销并关闭自己。

二.Yarn调度策略

1.容器调度

为多个用户提供一个共享集群,每个用户分配专门的资源队列。主要特征:分层队列、容量保证、安全性、弹性 、多租户、可操作性、基于资源的调度、基于用户或组的队列映射 。

设置ResourceManager使用CapacityScheduler

yarn-site.xml:

yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

设置队列

capacity-scheduler.xml:

<property> 
  <name>yarn.scheduler.capacity.root.queues</name> 
  <value>a,b,c</value> 
  <description>此级别的队列(root是根队列)</description> 
</property> 
<property> 
  <name>yarn.scheduler.capacity.root.a.queues</name> 
  <value>a1,a2</value> 
  <description>此级别的队列(root)是根队列</description> 
</property> 
<property> 
  <name>yarn.scheduler.capacity.root.b.queues</name> 
  <value>b1,b2,b3</value> 
  <description>此级别的队列(root是根队列)</description> 
</property>

队列属性

  • 资源分配
    yarn.scheduler.capacity<queue-path>.capacity 容量百分比(%)排队为浮点数(例如12.5)。每个级别的所有队列的容量总和必须等于100.如果有空闲资源,则队列中的应用程序可能比队列容量消耗更多资源,从而提供弹性。
    yarn.scheduler.capacity<queue-path>.maximum-capacity 最大队列容量,以百分比(%)表示为浮点数。这限制了队列中应用程序的弹性。默认为-1,禁用它。
    yarn.scheduler.capacity<queue-path>.minimum-user-limit-percent 如果存在资源需求,则每个队列对在任何给定时间分配给用户的资源百分比强制实施限制。用户限制可以在最小值和最大值之间变化。前者(最小值)设置为此属性值,后者(最大值)取决于已提交应用程序的用户数。例如,假设此属性的值为25.如果两个用户已将应用程序提交到队列,则任何单个用户都不能使用超过50%的队列资源。如果第三个用户提交应用程序,则任何单个用户都不能使用超过33%的队列资源。对于4个或更多用户,没有用户可以使用超过25%的队列资源。值100表示​​不强加用户限制。默认值为100.值指定为整数。
    yarn.scheduler.capacity.<queue-path>.user-limit-factor 队列容量的倍数,可以配置为允许单个用户获取更多资源。默认情况下,此值设置为1可确保单个用户永远不会超过队列配置的容量,无论群集的空闲程度如何。值被指定为float。
    yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb 每个队列在资源管理器上分配给每个容器请求的最大内存限制。此设置将覆盖群集配置yarn.scheduler.maximum-allocation-mb。该值必须小于或等于群集最大值。
    yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores 在资源管理器中分配给每个容器请求的虚拟核心的每个队列最大限制。此设置将覆盖群集配置yarn.scheduler.maximum-allocation-vcores。该值必须小于或等于群集最大值。
  • 队列管理和权限
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值