Hive内存溢出常见问题
1 MR作业运行过程中内存溢出错误分类
1.1 Mapper/Reducer阶段JVM内存溢出(一般都是堆)
1.1.1 JVM堆(Heap)内存溢出:堆内存不足时,一般会抛出如下异常:
- 1)-“java.lang.OutOfMemoryError: ” GC overhead limit exceeded;
- 2)-"Error: Java heapspace" 异常信息
- 3)-"running beyondphysical memory limits. Current usage: 2.1 GB of 2.0 GB physical memory used; 3 GB of 8.4 GB virtual memory used. Killing container"
1.1.2 栈内存溢出:抛出异常为 java.lang.StackOverflowError
常会出现在SQL中(SQL语句中条件组合太多,被解析成为不断的递归调用),或MR代码中有递归调用。这种深度的递归调用在栈中方法调用链条太长导致的。出现这种错误一般说明程序写的有问题。
1.2 MRAppMaster内存不足
如果作业的输入的数据很大,导致产生了大量的Mapper和Reducer数量,致使MRAppMaster(当前作业的管理者)的压力很大,最终导致MRAppMaster内存不足,作业跑了一般出现了OOM信息。
异常信息为:
Exception: java.lang.OutOfMemoryError thrown from theUncaughtExceptionHandler in thread "Socket Reader #1 for port 30703
Halting due to Out Of Memory Error...
Halting due to Out Of Memory Error...
Halting due to Out Of Memory Error...
1.3 非JVM内存溢出
异常信息一般为:java.lang.OutOfMemoryError:Direct buffer memory
自己申请使用操作系统的内存,没有控制好,出现了内存泄露,导致的内存溢出。
2 错误解决参数调优
2.1 Mapper/Reducer阶段JVM堆内存溢出参数调优
目前MapReduce主要通过两个组参数去控制内存:(将如下参数调大)
Mapper:
- mapreduce.map.java.opts=-Xmx2048m(默认参数,表示jvm堆内存,注意是mapreduce不是mapred)
- mapreduce.map.memory.mb=2304(container的内存)
Reducer:
- mapreduce.reduce.java.opts=-Xmx2048m(默认参数,表示jvm堆内存)
- mapreduce.reduce.memory.mb=2304(container的内存)
2.2 MRAppMaster
yarn.app.mapreduce.am.command-opts=-Xmx1024m(默认参数,表示jvm堆内存)
yarn.app.mapreduce.am.resource.mb=1536(container的内存)
注意在Hive ETL里面,按照如下方式设置:
set mapreduce.map.child.java.opts="-Xmx3072m"(注:-Xmx设置时一定要用引号,不加引号各种错误)
set mapreduce.map.memory.mb=3288
或
set mapreduce.reduce.child.java.opts="xxx"
set mapreduce.reduce.memory.mb=xxx
2.3 涉及YARN参数
- yarn.scheduler.minimum-allocation-mb (最小分配单位1024M)
- yarn.scheduler.maximum-allocation-mb (8192M)
- yarn.nodemanager.vmem-pmem-ratio (虚拟内存和物理内存之间的比率默认 2.1)
- yarn.nodemanager.resource.memory.mb
Yarn的ResourceManger(简称RM)通过逻辑上的队列分配内存,CPU等资源给application,默认情况下RM允许最大AM申请Container资源为8192MB(“yarn.scheduler.maximum-allocation-mb“),默认情况下的最小分配资源为1024M(“yarn.scheduler.minimum-allocation-mb“),AM只能以增量(”yarn.scheduler.minimum-allocation-mb“)和不会超过(“yarn.scheduler.maximum-allocation-mb“)的值去向RM申请资源,AM负责将(“mapreduce.map.memory.mb“)和(“mapreduce.reduce.memory.mb“)的值规整到能被(“yarn.scheduler.minimum-allocation-mb“)整除,RM会拒绝申请内存超过8192MB和不能被1024MB整除的资源请求。(不同配置会有不同)
Hive内存溢出常见问题相关推荐
- HIVE 内存溢出常见问题
MapReduce作业运行过程中内存溢出错误分类 1.Mapper/Reducer阶段JVM内存溢出(一般都是堆) 1)JVM堆(Heap)内存溢出:堆内存不足时,一般会抛出如下异常: 第一种:&qu ...
- java线程内存溢出_Java常见问题分析(内存溢出、内存泄露、线程阻塞等)
Java垃圾回收机制(GC) 1.1 GC机制作用 1.2 堆内存3代分布(年轻代.老年代.持久代) 1.3 GC分类 1.4 GC过程 Java应用内存问题分析 2.1 Java内存划分 2.2 J ...
- 【EXCEL常见问题】VBA内存溢出?
封面 本文转自: https://baijiahao.baidu.com/s?id=1628606130560163337&wfr=spider&for=pc 最近老用Excel做些 ...
- Documentum常见问题1—Tomcat应用内存溢出
问题1-Tomcat应用内存溢出 公司常用tomcat做开发或给用户测试,作为应用webtop的容器,但是时不时会遇到outofmemory的提示,这里,需要对tomcat中的Java内存进行设置. ...
- java求阶乘不内存溢出_No_16_0321 Java基础学习第二十一天
文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.03.21 lutianfei none [TOC] 递归 递归概述 方法定义中调用方法本身的现象 递归注意事项 要有出口 ...
- gateway 内存溢出问题_带你学习jvm java虚拟机 arthas/性能调优/故障排除/gc回收/内存溢出等...
学完本课程,您将掌握: 内存溢出问题实战 CPU飙升问题实战 阿里巴巴Arthas在线诊断 Class字节详细拆解 手写类加载器.四种类加载器.双亲委托模型 对象创建.存储.访问.加载解析 性能调优. ...
- vba可以放服务器上处理文档,vba 用服务器运行 内存溢出
vba 用服务器运行 内存溢出 内容精选 换一换 一个完整的AI CPU算子包含四部分:算子原型定义.对应开源框架的算子适配插件.算子信息库定义和算子实现.算子开发完成后在昇腾AI处理器硬件平台上的编 ...
- java 计数器越界,[总结]-第二章 Java内存区域与内存溢出异常
[总结]-第二章 Java内存区域与内存溢出异常 一.知识点 1.虚拟机运行时数据区 方法区:运行时常量池(JDK1.7被移出) 堆:存放对象实例或数组.新生代和老年代 虚拟机栈:线程私有.栈 本地方 ...
- java 监听器能监听宕机_java内存泄漏与内存溢出
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory: 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空 ...
最新文章
- Linux(Ubuntu)常用命令(二)
- php 数组存入mysql_PHP将数组存入数据库中的四种方式
- 干货分享:单片机编程学习攻略!
- 万网域名注册查询接口(API)的说明
- 从0开始学习自动化测试框架cypress(四)登录
- python对数组分类_有效地从字典Python中对数组进行分类
- shell--4、Shell 数组
- 【菜鸟收藏:全方位掌握Excel的ROUNDUP函数设置】
- 无限法则服务器维护中,维护内容
- 【信息系统项目管理师】第二十一章 项目组合管理(考点汇总篇)
- leet code: Two Sum
- 随机读写 vs 顺序读写
- python循环练习题
- 北航计算机九推经验,前辈种树 | 工科九推经验贴
- 《赵成的运维体系管理课》学习笔记(2)——持续交付
- Python自然语言处理学习笔记(22):3.6 规格化文本
- 如何使用GES进行社交关系考据?---GES查询能力介绍
- 人工智能基础——推理的基本概念
- 计算机电子教室发展趋势,探究“电子教室”在信息技术课堂教学中应用的利与弊.doc...
- uil在使用UART通信中的使用