资源管理器如何将容器分配给提交的作业?

时间:2016-09-20 08:59:53

标签: hadoop mapreduce yarn hadoop2

在hadoop 1.X中,我们在每个节点上都有几个固定大小的jvms。在新版本中,我们有容器,如果需要,将创建容器。

我想知道资源管理器是否创建了提交作业参数的容器?

1 个答案:

答案 0 :(得分:0)

根据文档,YARN旨在允许各个应用程序(通过ApplicationMaster)以共享,安全和多租户方式利用群集资源。此外,它仍然了解集群拓扑结构,以便有效地调度和优化数据访问,即尽可能减少应用程序的数据运动。

为了实现这些目标,中央调度程序(在ResourceManager中)具有有关应用程序资源需求的大量信息,这使其能够跨集群中的所有应用程序做出更好的调度决策。这导致我们进入ResourceRequest和生成的容器。

本质上,应用程序可以通过ApplicationMaster请求特定的资源请求,以满足其资源需求。 Scheduler通过授予容器来响应资源请求,该容器满足ApplicationMaster在初始ResourceRequest中规定的要求。

如您所知,我们在YARN中有三种调度方法:

  • Fair Scheduler
  • 容量调度程序
  • FIFO计划程序

每个人都有自己的方法来计算应用程序资源需求。

例如,CapacityScheduler具有ResourceCalculator的概念 - 一个可插入层,用于通过查看所有已识别的资源来执行分配的数学运算。这包括帮助做出以下决定的实用程序:

  • 此节点是否具有足够的资源来满足此请求?
  • 我可以在此节点上容纳多少个容器,使用可用的不同资源对节点列表进行排序。 YARN目前有两种计算器 - DefaultResourceCalculator和DominantResourceCalculator。

DefaultResourceCalculator在进行计算时只考虑内存。这就是默认情况下在CapacityScheduler中执行分配时忽略CPU要求的原因。所有分配的数学运算都减少到只检查资源请求所需的内存以及在特定调度周期中正在查看的节点上可用的内存。