1. 程式人生 > >關於yarn平臺下mapreduce執行出現的虛擬記憶體溢位問題

關於yarn平臺下mapreduce執行出現的虛擬記憶體溢位問題

關於yarn平臺下mapreduce執行出現的虛擬記憶體溢位問題
2014年09月05日 ⁄ 綜合 ⁄ 共 756字 ⁄ 字號 小 中 大 ⁄ 評論關閉
最近在測試一個統計型別的mapreduce 應用的job新功能時候,reducetask在執行中直接丟擲了下面的異常:

Container [pid=23708,containerID=container_1369623433359_0404_01_000151]
is running beyond physical memory limits. Current usage: 192Mb of 1.0gb physical memory used; 2.9gb of 2.1gb virtual memory used. Killing container.

設定了10個reducetask,而每個reducetask的4次嘗試 taskattempt 都失敗了 都以為同樣的虛擬記憶體的溢位問題。由於該Yarn所在的叢集規模比較小,相應的機器的配置也不高,平均每臺伺服器的記憶體只有20G左右,因此之前我在配置task的container的大小的時候,每個container的實體記憶體配置為1024M

,而yarn-site.xml 中的yarn.nodemanager.vmem-pmem-ratio的比例採用預設的2.1,根據這個比例 計算出來的預分配的虛擬記憶體為2.1G,而在實際執行中,發現單個reducetask需要2.9G的虛擬記憶體,因此導致了異常的出現。雖然通過調整了yarn-site.xml中的引數,通過增大虛擬記憶體的方式
解決了job中的記憶體錯誤,但心裡還是有那個疙瘩。當初自己在開發這個 統計任務的時候,資料量比當前大的多的情況下都沒出現過該問題,簡單的通過記憶體引數調整並不能真正解決問題,問題的隱患也不一定被完全發現,問題應該還是出在job對於資源的申請上。接下來估計會仔細研究下該job是否存在著什麼問題,畢竟一旦釋出到線上,將會迎來大資料量的考驗。

即修改2.1 為 3

<property>
		<name>yarn.nodemanager.vmem-pmem-ratio</name>
		<value>3</value>		
	</property>