服务器介绍
机器名称 | 内网IP | 内存 | CPU | 承载节点 |
---|---|---|---|---|
master | 192.168.10.10 | 4 | 4 | NodeManager、DataNode、NameNode |
slave1 | 192.168.10.11 | 4 | 4 | NodeManager、DataNode、ResourceManager |
slave2 | 192.168.10.12 | 4 | 4 | NodeManager、DataNode、SecondaryNameNode |
操作系统均为:CentOS 7.5
组件介绍
jdk1.8
hadoop 3.1.3
这里选用默认调度器(容量调度器)。
<property>
<name>yarn.resourcemanager.scheduler.classname>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacitySchedulervalue>
property>
ResourceManager 处理调度器请求的线程数量,默认 50
;
如果提交的任务数大于 50
,可以增加该值,但是不能超过总线程数量。
在当前测试环境中,我们共配置了 3
台服务器,4
核 CPU,共有 12
线程,但时不能直接设置为 12
,而应该设置为 8
(三分之二),剩余资源保障其它应用程序的正常运行。
<property>
<name>yarn.resourcemanager.scheduler.client.thread-countname>
<value>8value>
property>
顾名思义,就是自动检测当前系统配置,自动进行资源配置,默认为 false
。
在该系统内没有其它应用程序运行的情况下,可以开启该参数。
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilitiesname>
<value>falsevalue>
property>
指定逻辑处理器(虚拟核数)是否应该被视为独立的核心资源,默认为 false
。
物理核心处理器可以给集群带来更强的处理性能,而逻辑处理器能够提供更多的并发。
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-coresname>
<value>falsevalue>
property>
默认情况下,乘数为 1.0
,这意味着一个物理核心会被视为一个虚拟核心。
如果希望将一个物理核心映射为多个虚拟核心,可以将这个值调整为大于 1
的值。
可以根据应用程序需求、资源利用率以及性能测试结果来决定是否调整这个乘数。
<property>
<name>yarn.nodemanager.resource.pcores-vcores-multipliername>
<value>1.0value>
property>
用于指定每个 NodeManager 节点可以使用的内存量,以兆字节(MB)为单位,默认 8G
,修改为单台机器对应的内存量。
<property>
<name>yarn.nodemanager.resource.memory-mbname>
<value>4096value>
property>
用于指定每个 NodeManager 节点可以使用的虚拟核心数量(vCores),默认为 8
个,修改为单台机器对应的物理核心数量。
<property>
<name>yarn.nodemanager.resource.cpu-vcoresname>
<value>4value>
property>
用于设置每个容器(task或应用程序的运行实例)所能够分配到的最小与最大内存量。
最小内存默认为 1024
MB;
最小内存默认为 8192
MB,推荐设置为系统最大内存的一半;
<property>
<name>yarn.scheduler.minimum-allocation-mbname>
<value>1024value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-mbname>
<value>2048value>
property>
设置每个容器(任务或应用程序的运行实例)所能够分配到的最小与最大 CPU 虚拟核心数(vCores)。
最小虚拟核心数默认为 1
个;
最大虚拟核心数默认为 4
个,推荐设置为系统最大物理核心的一半;
<property>
<name>yarn.scheduler.minimum-allocation-vcoresname>
<value>1value>
property>
<property>
<name>yarn.scheduler.maximum-allocation-vcoresname>
<value>2value>
property>
用于指定是否启用虚拟内存检查来限制每个容器使用的虚拟内存量。
默认为 true
,NodeManager 将会在分配容器资源时,考虑每个容器使用的虚拟内存量。
如果一个容器的虚拟内存使用量超过了预先配置的限制,NodeManager 会采取措施来处理这种情况,通常是终止或杀死该容器。
在这里我调整为 false
。
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
用于设置虚拟内存与物理内存之间的比率,默认为 2.1
倍。
这个参数的目的是限制应用程序可以使用的虚拟内存量,以避免某个应用程序无限制地占用虚拟内存资源,导致其他任务和应用程序受影响。
<property>
<name>yarn.nodemanager.vmem-pmem-rationame>
<value>2.1value>
property>
完成配置后,分发 yarn
文件,重启 Hadoop,查看 yarn
配置信息: