hadoop yarn:显示应用程序的待处理资源请求

hadoop yarn: show the pending resoure request of an application

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

我正在使用 Hadoop 2.7.1。从资源管理器 UI,您可以看到 "Outstanding Resource Requests".

在RM UI:

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

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

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

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

第 1 阶段:

开始时启动了 7 个映射器 运行,总共分配了 8 个容器(7 个用于映射器,1 个用于 Application Master)。

所以,

Total Allocated Containers: 8
Total Outstanding Requests: <memory: 20876, vCores:17>

您可以观察到,有 17 个容器的未完成请求(25 减 8)。因此,未完成的内存请求总数为 = 17 * 1228 MB = 20876 MB,对于 vCores 为 = 17 * 1 = 17

查看下图:

第 2 阶段:

7 个映射器已完成,接下来的 7 个已安排。

现在:

Total Allocated Containers: 15
Total Outstanding Requests: <memory: 12280, vCores:10>

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

查看下图:

第 3 阶段:

14 个映射器已完成,接下来的 7 个已安排。

现在:

Total Allocated Containers: 22
Total Outstanding Requests: <memory: 3684, vCores:3>

您可以观察到,未完成的请求已减少到 3 个容器(25 减去 22)。因此,未完成的内存请求总数为 = 3 * 1228 MB = 3684 MB,对于 vCores 为 = 3 * 1 = 3

查看下图:

最后阶段:

最后,当所有容器都分配完毕后,您将只看到“Total Allocated Containers”。

查看下图:

希望这能澄清您的疑问。

您可以从 YARN API 端点

获取容器信息和更多信息
http://<rm http address:port>/ws/v1/cluster/metrics

请访问以下资源以获取更多详细信息

https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Metrics_API