当使用更多节点时,hadoop没有创建足够的容器

时间:2016-08-18 19:12:30

标签: hadoop memory yarn

所以我试图在AWS R3.4xLarge机器上运行一些hadoop作业。他们有16个vcores和122千兆字节的ram。

我的每个地图制作者都需要大约8演出的ram和一个线程,因此这些机器非常适合这项工作。

我将mapreduce.memory.mb设置为8192, 和mapreduce.map.java.opts设置为-Xmx6144 这将导致每台机器上运行大约14个映射器(实际上接近12个)。

实际上是2从设置的情况,其中调度程序显示集群的90%利用率。

然而,当缩放到4个奴隶时,似乎hadoop根本不会创建更多的映射器。事实上它创造了LESS。

在我的2个奴隶设置中,我在任何时间只有不到30个地图集运行,在我有大约20个的四个奴隶上。这些机器的利用率只有不到50%。

vcores在那里,物理内存就在那里。到底是什么?为什么hadoop没有创建更多容器?

1 个答案:

答案 0 :(得分:0)

事实证明,无论你多么努力地想出来,这都是那些无用的事情之一。

在yarn-default中有一个名为yarn.nodemanager.heartbeat.interval-ms的设置。 这设置为1000.显然它控制分配容器之间的最短时间(以毫秒为单位)。

这意味着它每秒只创建一个新的地图任务。这意味着容器的数量受到我运行的容器数量*容器完成所需时间的限制。

通过将此值设置为50或更好,1,我能够获得hadoop群集所期望的那种缩放。老实说,应该更好地记录下来。