容器 运行 超出了虚拟内存限制
Container is running beyond virtual memory limits
当我做rhadoop例子的时候,出现了下面的错误。
运行 超出了虚拟内存限制。当前使用情况:已使用 121.2 MB 的 1 GB 物理内存;使用了 2.1 GB 的 2.1 GB 虚拟内存。正在终止容器。
已应要求杀死容器。退出代码为 143
容器以非零退出代码 143 退出
hadoop 流式处理失败,错误代码为 1
我该如何解决?
我的 hadoop 设置。
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
纱-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/usr/local/hadoop-2.7.3/data/yarn/nm-local-dir</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<value>/usr/local/hadoop-2.7.3/data/yarn/system/rmstore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>0.0.0.0:8089</value>
</property>
</configuration>
我参考了以下网站。
http://crazyadmins.com/tag/tuning-yarn-to-get-maximum-performance/
然后我知道我可以更改 mapreduce 的内存分配。
我改了mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>1600</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>1600</value>
</property>
</configuration>
我在 运行 YARN 集群上的 Spark 应用程序时遇到几乎相同的错误。
"Container [pid=791,containerID=container_1499942756442_0001_02_000001] is running beyond virtual memory limits. Current usage: 135.4 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memory used. Killing container."
我通过在文件 yarn-site.xml
中禁用虚拟内存检查解决了这个问题
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
这个设置对我来说已经足够了。
当我做rhadoop例子的时候,出现了下面的错误。
运行 超出了虚拟内存限制。当前使用情况:已使用 121.2 MB 的 1 GB 物理内存;使用了 2.1 GB 的 2.1 GB 虚拟内存。正在终止容器。
已应要求杀死容器。退出代码为 143
容器以非零退出代码 143 退出
hadoop 流式处理失败,错误代码为 1
我该如何解决?
我的 hadoop 设置。
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
纱-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/usr/local/hadoop-2.7.3/data/yarn/nm-local-dir</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<value>/usr/local/hadoop-2.7.3/data/yarn/system/rmstore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>0.0.0.0:8089</value>
</property>
</configuration>
我参考了以下网站。 http://crazyadmins.com/tag/tuning-yarn-to-get-maximum-performance/
然后我知道我可以更改 mapreduce 的内存分配。
我改了mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>1600</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>1600</value>
</property>
</configuration>
我在 运行 YARN 集群上的 Spark 应用程序时遇到几乎相同的错误。
"Container [pid=791,containerID=container_1499942756442_0001_02_000001] is running beyond virtual memory limits. Current usage: 135.4 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memory used. Killing container."
我通过在文件 yarn-site.xml
中禁用虚拟内存检查解决了这个问题<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
这个设置对我来说已经足够了。