返回 导航

大数据

hangge.com

YARN - 解决资源信息统计显示不正确问题(CPU和内存都是8)

作者:hangge | 2024-08-29 08:34

1,问题描述

(1)我们知道 YARN 主要负责管理集群中的 CPU 和内存资源。NodeManager 节点在启动时,会自动向 ResourceManager 节点注册,将当前节点上的可用 CPU 和内存信息注册进去。这样所有的 NodeManager 注册完成后,ResourceManager 就知道目前集群的资源总量了。
注意:这里面显示的资源是集群中所有从节点的资源总和,不包括主节点的资源。

(2)比如我搭建了个单节点的 Hadoop 集群,显示节点数为 1CPU 数是 8 个,内存是 8G。但是这个数值是对不上的,因为我使用虚拟机部署时只给它分配了 5G 的内存和 2CPU

2,问题原因

(1)这是因为在 yarn-default.xml 中有这些默认资源的配置信息:
  • yarn.nodemanager.resource.memory-mb:单节点可分配的物理内存总量,默认是 8MB*1024,即 8G
  • yarn.nodemanager.resource.cpu-vcores:单节点可分配的虚拟 CPU 个数,默认是 8

(2)这都是默认单节点的内存和 CPU 信息,就算你这个机器没有这么多资源,但是在 yarn-default.xml 中有这些默认资源的配置,这样当 NodeManager 去上报资源的时候就会读取这两个参数的值,这也就是为什么我们在前面看到了单节点都是 8G 内存和 8cpu

3,解决办法

(1)要解决这个问题,我们需要编辑 yarn-site.xml 文件,该文件通常位于 Hadoop 安装目录的 etc/hadoop 子目录中。
vi /usr/local/hadoop/etc/hadoop/yarn-site.xml

(2)然后根据根据我们的 CPU 和内存规格(例如 2CPU 核心和 5GB 内存)添加相关配置。
<!-- 配置节点管理器的内存容量 -->
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>5120</value> <!-- 5GB内存,转换为MB -->
</property>

<!-- 配置节点管理器的CPU核心数 -->
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>2</value> <!-- 2个CPU核心 -->
</property>

<!-- 配置YARN调度器为单个容器分配的最大内存 -->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>5120</value> <!-- 最大分配内存为5GB,转换为MB -->
</property>

<!-- 配置YARN调度器为单个容器分配的最大CPU核心数 -->
<property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>2</value> <!-- 最大分配2个CPU核心 -->
</property>

(3)重启 Hadoop 集群:
./sbin/stop-all.sh
./sbin/start-all.sh

(4)可以看到显示的资源信息已经修改后的了:
评论

全部评论(0)

回到顶部