在Hadoop v1中,我為每個7個映射器和化簡器插槽分配了1GB的大小,我的映射器和化簡器運(yùn)行良好。我的機(jī)器有8G內(nèi)存,8個處理器?,F(xiàn)在使用YARN,在同一臺計(jì)算機(jī)上運(yùn)行相同的應(yīng)用程序時,出現(xiàn)了容器錯誤。默認(rèn)情況下,我有以下設(shè)置: <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1024</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>8192</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> </property>它給了我錯誤:Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.然后,我嘗試在mapred-site.xml中設(shè)置內(nèi)存限制: <property> <name>mapreduce.map.memory.mb</name> <value>4096</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>4096</value> </property>但仍然出現(xiàn)錯誤:Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. Killing container.我很困惑為什么map任務(wù)需要這么多的內(nèi)存。據(jù)我了解,1GB的內(nèi)存足以完成我的地圖/縮小任務(wù)。為什么當(dāng)我為容器分配更多內(nèi)存時,任務(wù)使用了更多內(nèi)存?是因?yàn)槊總€任務(wù)都會得到更多分割嗎?我覺得稍微減少容器的大小并創(chuàng)建更多的容器會更有效,以便更多的任務(wù)并行運(yùn)行。問題是如何確定每個容器分配的拆分?jǐn)?shù)量是否超過其處理能力?
3 回答

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個贊
在EMR中使用HIVE時,我遇到了一個非常相似的問題。現(xiàn)存的解決方案中沒有為我工作-即沒有為我工作映射精簡配置的; 而且都沒有設(shè)置yarn.nodemanager.vmem-check-enabled為false。
但是,最終的工作是設(shè)置tez.am.resource.memory.mb,例如:
hive -hiveconf tez.am.resource.memory.mb=4096
考慮調(diào)整的另一個設(shè)置是 yarn.app.mapreduce.am.resource.mb
- 3 回答
- 0 關(guān)注
- 1104 瀏覽
添加回答
舉報(bào)
0/150
提交
取消