栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive虚拟内存溢出报错:2.9GB of 2.1GB virtual memory used. Killing container.解决办法

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/672734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号