单节点集群(hadoop)中的最大容器是多少?

时间:2014-10-24 02:20:24

标签: apache hadoop mapreduce yarn hadoop2

我是hadoop的新手,我对它的配置还不熟悉。

我只想询问每个节点的最大容器数。

我正在使用单节点群集(6GB ram笔记本电脑)

以下是我的mapred和yarn配置:

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

**yarn-site.xml**
resource memory-mb : 40GB
min allocation-mb : 1GB

以上设置只能运行4到5个作业。最多8个容器。

1 个答案:

答案 0 :(得分:13)

在单个NodeManager(hadoop worker)上运行的最大容器取决于很多因素,例如为NodeManager分配了多少内存,也取决于应用程序的特定要求。

yarn.scheduler.*-allocation-*的默认值为:1GB(最小分配),8GB(最大分配),1个核心和32个核心。因此,最小和最大分配会影响每个节点的容器数。

因此,如果您有6GB RAM和4个虚拟内核,那么YARN配置应该是这样的:

yarn.scheduler.minimum-allocation-mb: 128
yarn.scheduler.maximum-allocation-mb: 2048
yarn.scheduler.minimum-allocation-vcores: 1
yarn.scheduler.maximum-allocation-vcores: 2
yarn.nodemanager.resource.memory-mb: 4096
yarn.nodemanager.resource.cpu-vcores: 4

上面的配置告诉hadoop使用最多4GB和4个虚拟内核,每个容器可以有128 MB到2 GB的内存和1到2个虚拟内核,通过这些设置,你可以运行最多2个容器和最大资源一次。

现在,对于MapReduce特定配置:

yarn.app.mapreduce.am.resource.mb: 1024
yarn.app.mapreduce.am.command-opts: -Xmx768m
mapreduce.[map|reduce].cpu.vcores: 1
mapreduce.[map|reduce].memory.mb: 1024
mapreduce.[map|reduce].java.opts: -Xmx768m

通过这种配置,理论上最多可以在4个1GB容器中同时运行4个映射器/缩减器。在实践中,MapReduce应用程序主机将使用1GB容器,因此并发映射器和缩减器的实际数量将限制为3.您可以使用内存限制,但可能需要一些实验才能找到最佳的。

根据经验,您应该将堆大小限制为可用总内存的大约75%,以确保运行更顺畅。

您还可以使用yarn.scheduler.minimum-allocation-mb属性为每个容器设置内存。

有关生产系统的更多详细信息配置,请使用hortonworks中的document作为参考。