溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

hive運(yùn)行報(bào)錯(cuò)running beyond virtual memory錯(cuò)誤原因及解決辦法是什么

發(fā)布時(shí)間:2021-12-06 14:08:49 來(lái)源:億速云 閱讀:148 作者:柒染 欄目:云計(jì)算

hive運(yùn)行報(bào)錯(cuò)running beyond virtual memory錯(cuò)誤原因及解決辦法是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

問(wèn)題:在hive中運(yùn)行應(yīng)用,出現(xiàn)了running beyond virtual memory錯(cuò)誤。提示如下:

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.原因:運(yùn)行的Container試圖使用過(guò)多的內(nèi)存,而被NodeManager kill掉了。
[摘錄](méi) The NodeManager is killing your container. It sounds like you are trying to use hadoop streaming which is running as a child process of the map-reduce task. The NodeManager monitors the entire process tree of the task and if it eats up more memory than the maximum set in mapreduce.map.memory.mb or mapreduce.reduce.memory.mb respectively, we would expect the Nodemanager to kill the task, otherwise your task is stealing memory belonging to other containers, which you don't want.

要解決這個(gè)異常,得熟悉yarn自身的虛擬內(nèi)存管理規(guī)則,在Yarn平臺(tái)中,CPU,內(nèi)存,磁盤都被抽象成資源來(lái)自使用,管理資源的角色主要有Yarn Resource Manager (RM) 負(fù)責(zé)總的資源調(diào)度,然后每個(gè)節(jié)點(diǎn)上有Nodemanager 來(lái)監(jiān)聽守護(hù)資源,在具體到每一個(gè)應(yīng)用上是通過(guò)Application Master (AM) container來(lái)給Map或Reduce任務(wù)來(lái)分配資源,具體的屬性如下: 
(1)yarn.nodemanager.resource.memory-mb 
可分配的物理內(nèi)存總量,默認(rèn)是8*1024MB。 
(2)yarn.nodemanager.vmem-pmem-ratio 
每單位的物理內(nèi)存總量對(duì)應(yīng)的虛擬內(nèi)存量,默認(rèn)是2.1,表示每使用1MB的物理內(nèi)存,最多可以使用2.1MB的虛擬內(nèi)存總量。 

第二個(gè)屬性,比率的控制影響著虛擬內(nèi)存的使用,當(dāng)yarn計(jì)算出來(lái)的虛擬內(nèi)存,比在mapred-site.xml里的mapreduce.map.memory.mb或mapreduce.reduce.memory.mb的2.1倍還要多時(shí),就會(huì)發(fā)生上面截圖中的異常,而默認(rèn)的mapreduce.map.memory.mb或 
mapreduce.reduce.memory.mb得初始大小為1024M,然后根據(jù)異常中的yarn自身根據(jù)運(yùn)行環(huán)境推算出來(lái)的虛擬內(nèi)存來(lái)做比較,發(fā)現(xiàn)比1024*2.1還要大,所以就會(huì)由NodeManage守護(hù)進(jìn)程kill掉AM容器,從而導(dǎo)致整個(gè)MR作業(yè)運(yùn)行失敗,現(xiàn)在我們只需要調(diào)大這個(gè)比率即可,避免發(fā)生這種異常。具體調(diào)大多小,可根據(jù)具體情況來(lái)設(shè)置。

兩種解決方法:

1、上面提到的修改yarn-site.xml配置文件,可以增加yarn.nodemanager.vmem-pmem-ratio的比例,但這種修改方法需要重新啟動(dòng)集群才可以生效,同時(shí)要注意所有節(jié)點(diǎn)的resourceManager或NodeManager進(jìn)程必須重啟成功(我遇到過(guò) 用stop-yarn.sh重啟集群然而resourceManager進(jìn)程并沒(méi)有stop,導(dǎo)致應(yīng)用不生效的情況,可在stop-yarn.sh執(zhí)行后用jps命令確認(rèn)); 

2、修改mapred-site.xml配置文件中這兩個(gè)值,注意map和reduce的java.opts值需要小于對(duì)應(yīng)的mapreduce.memory值 (value中實(shí)際配置的內(nèi)存需要根據(jù)自己機(jī)器內(nèi)存大小及應(yīng)用情況進(jìn)行修改)  。

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>1536</value>
</property>
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M</value>
</property>
<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>3072</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2560M</value>
</property>

 

在hive命令行查看和設(shè)置相關(guān)值:

hive運(yùn)行報(bào)錯(cuò)running beyond virtual memory錯(cuò)誤原因及解決辦法是什么

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI