2017-05-01 62 views
0

當運行Hadoop的任務,我得到了以下錯誤的Hadoop Containder運行超出了物理內存限制

Container [pid=12850,containerID=container_1489504424139_0638_01_201123] is running beyond physical memory limits. Current usage: 4.0 GB of 4 GB physical memory used; 8.8 GB of 8.4 GB virtual memory used. Killing container. 

我在搜索計算器,它給了我幾頁(Link1Link2)。但它沒有幫助。我仍然有錯誤。我目前的mapred-site.xml文件如下:

<configuration> 
<property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
</property> 
<property> 
    <name>mapreduce.map.java.opts</name> 
    <value> -Xmx3072m</value> 
</property> 
<property> 
    <name>mapreduce.reduce.java.opts</name> 
    <value> -Xmx6144m</value> 
</property> 
<property> 
    <name>mapreduce.map.memory.mb</name> 
    <value>4096</value> 
</property> 
<property> 
    <name>mapreduce.reduce.memory.mb</name> 
    <value>8192</value> 
</property> 
<property> 
    <name>mapred.child.java.opts</name> 
    <value>-Xmx2048m</value> 
</property> 
</configuration> 

謝謝!

回答

0

我試圖改變的XML文件。但是後來我發現如果我通過一些Java API來創建我的Python代碼(這是通過一些依賴於某些C++ API的java api)更友善的內存,即如果它超出了範圍,那麼我明確地調用它的析構函數。然後問題就消失了!

1

嘗試使用這些屬性:

mapreduce.map.output.compress 
mapreduce.map.output.compress.codec 

OR

更改內存分配道具:

mapreduce.map.memory.mb 
mapreduce.reduce.memory.mb