如何获取应用程序发送给资源管理器的待处理请求数?据我所知,资源管理器可能不会立即分配所请求的资源,因此会请求请求,对吧?
答案 0 :(得分:4)
我使用的是Hadoop 2.7.1。在Resource Manager UI中,您可以看到" Outstanding Resource Requests"。
在RM UI中:
例如,我运行了一个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,对于vCore,它是= 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,对于vCore,它是= 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,对于vCore,它是= 3 * 1 = 3
检查下图:
最后阶段:
最后,当分配了所有容器后,您将看到&#34; 总分配容器&#34;。
检查下图:
希望这澄清了你的疑问。
答案 1 :(得分:1)
您可以从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