yarn如何管理hadoop中的额外资源?

qvk1mo1f  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(311)

假设有3个顶级队列,q1、q2、q3
q1和q2的用户将他们的作业提交到各自的队列中,保证他们获得分配的资源。现在,第三季度未使用的资源必须在第一季度和第二季度使用。在分配额外资源时,Yarn会考虑哪些因素?谁(q1,q2)得到优先权?

gcmastyq

gcmastyq1#

capacity scheduler中的每个队列都有两个重要属性(以可用资源总量的百分比定义),它们决定了调度:
队列的保证容量(由配置“yarn.scheduler.capacity.{queue path}.capacity”确定)
队列可以增长到的最大容量(由配置“yarn.scheduler.capacity.{queue path}.maximum capacity”确定)。这对队列的资源利用率设置了一个上限。队列不能超过此限制。
容量调度器以分层方式组织队列。队列有两种类型“父”和“叶”队列。作业只能提交到叶队列。
“根”队列是所有其他队列的父级。
每个父队列根据需求对子队列进行排序(队列的当前使用容量是多少?是吃得少还是吃得多?)。
对于每个队列,比率(已用容量/集群总容量)表示队列的利用率。父队列总是优先于服务最差的子队列。。
将空闲资源分配给父队列时,资源将递归地分配给子队列,具体取决于队列当前使用的容量。
在叶队列中,容量的分配可以基于某些用户限制(例如,配置参数:yarn.scheduler.capacity.{queue path}.minimum user limit percent,确定每个用户保证拥有的最小队列容量)。
在您的示例中,为了简单起见,让我们假设队列q1、q2和q3直接出现在“root”下。如前所述,父队列根据它们的利用率对队列进行排序。
由于q3根本没有被利用,父级可以在q1和q2之间分配q3的未利用资源。
可用资源的分配基于以下因素:
如果q1和q2都有足够的资源来继续调度它们的作业,那么就不需要分配q3中的可用资源
如果q1和q2都达到了最大容量(“yarn.scheduler.capacity.{queue path}.maximum capacity”),这个配置会限制队列的弹性。队列要求的资源不能超过此参数配置的百分比),则不分配可用资源
如果队列q1或q2中的任何一个服务不足,则将空闲资源分配给服务不足的队列
如果q1和q2都服务不足,则服务不足最多的队列被赋予最高优先级。

相关问题