Hive虚拟内存溢出报错:2.9GB of 2.1GB virtual memory used. Killing container.解决办法
Posted Z.Q.Fengᯤ⁵ᴳ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive虚拟内存溢出报错:2.9GB of 2.1GB virtual memory used. Killing container.解决办法相关的知识,希望对你有一定的参考价值。
一、项目场景
系统版本:Ubuntu18.04
Hadoop版本:Hadoop3.2.2
(分布式安装)
Hive版本:Hive3.1.2
二、问题描述
在使用 Hive
执行 select
语句时,出现了 job 分配报错:
...
ERROR exec.Task: Ended Job = job_1639344121150_0015 with errors
ERROR exec.Task: Error during job, obtaining debugging information...
...
Container [pid=20022,containerID=container_123123432324_0015_01_000005] is running 78348374834B
beyond the 'VIRTUAL' memory limit. Current usage: 247.6 MB of 1GB physical memory used;
2.9GB of 2.1GB virtual memory used. Killing container.
...
三、原因分析
可以看到,2.9GB of 2.1GB virtual memory used.
,2.1GB 的虚拟内存分配了 2.9GB 的任务,导致内存溢出,容器自动被 killed 掉了。这里的容器具体是 map 容器
还是 reduce 容器
我们暂且不管它。
四、解决方案
在执行 Hive
语句之前,先为 map
和 reduce
端设置参数如下:
set mapreduce.map.memory.mb=4096;
set mapreduce.map.java.opts=-Xmx3276M;
set mapreduce.reduce.memory.mb=4096;
set mapreduce.reduce.java.opts=-Xmx3276M;
注:java.opts 是 memory.mb 的 80% 左右,根据内存溢出时提示的内存大小(例如:Current usage: 2.0 GB of 2 GB physical memory used
)进行增大内存,增大的最小单位是1GB。
接着再尝试执行我们的 select 语句。参考博客:https://blog.csdn.net/weixin_33581873/article/details/111948418
以上是关于Hive虚拟内存溢出报错:2.9GB of 2.1GB virtual memory used. Killing container.解决办法的主要内容,如果未能解决你的问题,请参考以下文章