hive job oom問題

weixin_34293059發表於2017-04-28

    錯誤資訊例如以下:Container [pid=26845,containerID=container_1419056923480_0212_02_000001] is running beyond virtual memory limits. Current usage: 262.8 MB of 2 GB physical memory used; 4.8 GB of 4.2 GB virtual memory used. Killing container.

    分析:剛開始以為是記憶體不夠,所以不斷的調大虛擬記憶體,問題是攻克了。可是實際執行的時候還是會偶爾報這個錯誤。

    問題的解決辦法在於:

set yarn.nodemanager.resource.memory-mb=2048;

set yarn.app.mapreduce.am.command-opts=-Xmx2048m;

    這兩個引數配成了相等,而實際上第一個引數為節點能從yarn上獲得的全部記憶體,第二個引數為其上執行的jvm記憶體。除了jvm之外還須要一些空間來讓總體work起來。

當jvm佔用記憶體太大的時候就有可能大於yarn.nodemanager.resource.memory-mb配置的臨界點。被Container kill掉。推薦的比例是jvm為實際記憶體的0.8

    map和reduce的記憶體配置相同有這個問題。演示樣例配置:

mapred-site.xml
set mapreduce.map.memory.mb=1024;
set mapreduce.map.java.opts=-Xmx819m;
set mapreduce.reduce.memory.mb=2048;
set mapreduce.reduce.java.opts=-Xmx1638m;

yarn-site.xml
set yarn.nodemanager.resource.memory-mb=2048;
set yarn.app.mapreduce.am.command-opts=-Xmx1638m;


這篇文章詳細說明了問題的解決辦法和推薦的配置

http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.9.1/bk_installing_manually_book/content/rpm-chap1-11.html?

textToSearch=queue#


相關文章