如何获得应用程序发送到资源管理器的待处理请求的数量?据我所知,资源管理器可能不会立即分配所请求的资源,因此请求将被挂起,对吗?

最佳答案

我正在使用Hadoop 2.7.1。从资源管理器UI中,您可以看到“未完成的资源请求”。

在RM用户界面中:

  • 单击正在运行的应用程序(例如application_1447644421851_0004)
  • 在应用程序页面中,单击尝试ID(例如appattempt_1447644421851_0004_000001)
  • 在“应用程序尝试ID”页面中,您将看到“已分配的容器总数”和“尚未完成的资源请求总数”的详细信息。

  • 例如,我运行了一个DistCp作业,该作业需要24个映射器。因此,分配的容器总数为24 + 1(Application Master的1个容器)= 25。

    根据我的设置,每个容器需要1,228 MB的内存和1个vCore。

    我已经用下面的图片解释了这项工作的进度:

    阶段1:

    首先,开始运行7个映射器,总共分配了8个容器(7个映射器和1个Application Master容器)。

    所以,
    Total Allocated Containers: 8Total Outstanding Requests: <memory: 20876, vCores:17>
    您可以观察到,有17个容器(25减8)有未完成的请求。因此,总的未完成内存请求为= 17 * 1228 MB = 20876 MB,而对于vCores,则为= 17 * 1 = 17

    查看下面的图片:
    Hadoop yarn : show the pending resoure request of an application-LMLPHP

    阶段2:

    完成了7个映射器,并计划了下7个。

    现在:
    Total Allocated Containers: 15Total Outstanding Requests: <memory: 12280, vCores:10>
    您可以观察到,未完成的请求现在减少到10个容器(25减15)。因此,未完成的内存请求总数为= 10 * 1228 MB = 12280 MB,对于vCores,请求总数为= 10 * 1 = 10

    查看下面的图片:

    Hadoop yarn : show the pending resoure request of an application-LMLPHP

    阶段3:

    完成了14个映射器,并计划了下7个映射器。

    现在:
    Total Allocated Containers: 22Total Outstanding Requests: <memory: 3684, vCores:3>
    您可以观察到,未完成的请求下降到3个容器(25减22)。因此,总的未完成内存请求为= 3 * 1228 MB = 3684 MB,而对于vCores,则为3 * 1 = 3

    查看下面的图片:

    Hadoop yarn : show the pending resoure request of an application-LMLPHP

    最后阶段:

    最后,在分配完所有容器后,您将只看到“已分配的容器总数”。

    查看下面的图片:

    Hadoop yarn : show the pending resoure request of an application-LMLPHP

    希望这可以澄清您的疑问。

    关于Hadoop yarn : show the pending resoure request of an application,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33705000/

    10-15 22:20