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内存溢出常见问题相关推荐

  1. HIVE 内存溢出常见问题

    MapReduce作业运行过程中内存溢出错误分类 1.Mapper/Reducer阶段JVM内存溢出(一般都是堆) 1)JVM堆(Heap)内存溢出:堆内存不足时,一般会抛出如下异常: 第一种:&qu ...

  2. java线程内存溢出_Java常见问题分析(内存溢出、内存泄露、线程阻塞等)

    Java垃圾回收机制(GC) 1.1 GC机制作用 1.2 堆内存3代分布(年轻代.老年代.持久代) 1.3 GC分类 1.4 GC过程 Java应用内存问题分析 2.1 Java内存划分 2.2 J ...

  3. 【EXCEL常见问题】VBA内存溢出?

    封面 本文转自: https://baijiahao.baidu.com/s?id=1628606130560163337&wfr=spider&for=pc  最近老用Excel做些 ...

  4. Documentum常见问题1—Tomcat应用内存溢出

    问题1-Tomcat应用内存溢出 公司常用tomcat做开发或给用户测试,作为应用webtop的容器,但是时不时会遇到outofmemory的提示,这里,需要对tomcat中的Java内存进行设置. ...

  5. java求阶乘不内存溢出_No_16_0321 Java基础学习第二十一天

    文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.03.21 lutianfei none [TOC] 递归 递归概述 方法定义中调用方法本身的现象 递归注意事项 要有出口 ...

  6. gateway 内存溢出问题_带你学习jvm java虚拟机 arthas/性能调优/故障排除/gc回收/内存溢出等...

    学完本课程,您将掌握: 内存溢出问题实战 CPU飙升问题实战 阿里巴巴Arthas在线诊断 Class字节详细拆解 手写类加载器.四种类加载器.双亲委托模型 对象创建.存储.访问.加载解析 性能调优. ...

  7. vba可以放服务器上处理文档,vba 用服务器运行 内存溢出

    vba 用服务器运行 内存溢出 内容精选 换一换 一个完整的AI CPU算子包含四部分:算子原型定义.对应开源框架的算子适配插件.算子信息库定义和算子实现.算子开发完成后在昇腾AI处理器硬件平台上的编 ...

  8. java 计数器越界,[总结]-第二章 Java内存区域与内存溢出异常

    [总结]-第二章 Java内存区域与内存溢出异常 一.知识点 1.虚拟机运行时数据区 方法区:运行时常量池(JDK1.7被移出) 堆:存放对象实例或数组.新生代和老年代 虚拟机栈:线程私有.栈 本地方 ...

  9. java 监听器能监听宕机_java内存泄漏与内存溢出

    内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory: 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空 ...

最新文章

  1. Linux(Ubuntu)常用命令(二)
  2. php 数组存入mysql_PHP将数组存入数据库中的四种方式
  3. 干货分享:单片机编程学习攻略!
  4. 万网域名注册查询接口(API)的说明
  5. 从0开始学习自动化测试框架cypress(四)登录
  6. python对数组分类_有效地从字典Python中对数组进行分类
  7. shell--4、Shell 数组
  8. 【菜鸟收藏:全方位掌握Excel的ROUNDUP函数设置】
  9. 无限法则服务器维护中,维护内容
  10. 【信息系统项目管理师】第二十一章 项目组合管理(考点汇总篇)
  11. leet code: Two Sum
  12. 随机读写 vs 顺序读写
  13. python循环练习题
  14. 北航计算机九推经验,前辈种树 | 工科九推经验贴
  15. 《赵成的运维体系管理课》学习笔记(2)——持续交付
  16. Python自然语言处理学习笔记(22):3.6 规格化文本
  17. 如何使用GES进行社交关系考据?---GES查询能力介绍
  18. 人工智能基础——推理的基本概念
  19. 计算机电子教室发展趋势,探究“电子教室”在信息技术课堂教学中应用的利与弊.doc...
  20. uil在使用UART通信中的使用

热门文章

  1. IE网页flash空白
  2. 2005年上半年网络管理员考试
  3. 卸载Visual Studio 2013,Visual Studio 2015和Visual Studio vNext的所有Preview / RC / RTM版本
  4. 嵌入式系统课程设计题目
  5. Python Xml dom解析 输出json操作
  6. 2013年火车票之抢票神器--【车票无忧】
  7. mybatis-generator-gui 一款 mybatis generator 的图形界面工具
  8. linux镜像文件的下载
  9. 什么是安全认证(CA)?
  10. 安智杰宣布获5千万A轮融资 达晨财智独家投资