【发布时间】:2015-06-17 01:44:31
【问题描述】:
我正在运行一个 MapReduce Pipes 程序,并将内存限制设置如下:
在yarn-site.xml:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
在mapred-site.xml中:
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx384m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx384m</value>
</property>
我目前在单个节点上以伪分布式模式运行。在容器被杀死之前,我收到以下错误:
2015-04-11 12:47:49,594 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: Diagnostics report from attempt_1428741438743_0001_m_000000_0: Container [pid=8140,containerID=container_1428741438743_0001_01_000002] is running beyond virtual memory limits. Current usage: 304.1 MB of 1 GB physical memory used; 1.0 TB of 2.1 GB virtual memory used. Killing container.
我最关心的是使用了 1.0 TB 的虚拟内存,我正在运行的应用程序远未消耗这么多内存,甚至远未消耗 1 GB 内存。
这是否意味着我的代码中存在内存泄漏,或者我的内存配置可能是错误的?
谢谢。
问候,
【问题讨论】:
-
您的服务器可能交换了很多,也许您应该先调查一下。
标签: hadoop memory memory-leaks virtual-memory