如何在hadoop mapreduce/yarn中设置VCORES?

And*_*rew 4 hadoop mapreduce hadoop-yarn hcatalog

以下是我的配置:

**mapred-site.xml**
map-mb : 4096 opts:-Xmx3072m
reduce-mb : 8192 opts:-Xmx6144m

**yarn-site.xml**
resource memory-mb : 40GB
min allocation-mb : 1GB
Run Code Online (Sandbox Code Playgroud)

hadoop集群中的Vcores显示8GB,但我不知道如何计算或在何处配置它.

希望有人能帮助我.

Nic*_*mak 7

简答

如果您只是在单节点集群甚至是小型个人分布式集群上运行hadoop,那么这很可能无关紧要.你只需要担心记忆.

答案很长

vCore用于较大的群集,以限制不同用户或应用程序的CPU.如果您自己使用YARN,则没有理由限制容器CPU.这就是为什么在Hadoop中默认不考虑vCore的原因!

尝试将可用的nodemanager vcores设置为1.没关系!您的容器数量仍然是2或4 ..或任何值的值:

yarn.nodemanager.resource.memory-mb/mapreduce.[map|reduce].memory.mb

如果确实需要考虑vCores的容器数量,并受到以下限制:

yarn.nodemanager.resource.cpu-vcores/mapreduce.[map|reduce].cpu.vcores

那么你需要使用不同的不同资源计算器.转到您的capacity-scheduler.xml配置并将DefaultResourceCalculator更改为DominantResourceCalculator.

除了使用vCores进行容器分配之外,还想使用vCore来真正限制每个节点的CPU使用率吗?您需要更改更多配置才能使用LinuxContainerExecutor而不是DefaultContainerExecutor,因为它可以管理用于限制CPU资源的linux cgroup.如果您想了解更多信息,请关注此页面.


vis*_*hnu 4

yarn.nodemanager.resource.cpu-vcores - 可以分配给容器的 CPU 核心数。

mapreduce.map.cpu.vcores - 为作业的每个映射任务分配的虚拟 CPU 核心数

mapreduce.reduce.cpu.vcores - 作业的每个reduce任务的虚拟CPU核心数