hadoop hive任务失败,原因是GC overhead limit exceeded (OOM)

GC Overhead Limit Exceeded errorjava.lang.OutOfMemoryError家族的一员,表示JVM内存被耗尽。

OutOfMemoryErrorjava.lang.VirtualMachineError的子类,当JVM资源利用出现问题时抛出,更具体地说,这个错误是由于JVM花费太长时间执行GC且只能回收很少的堆内存时抛出的。

根据Oracle官方文档,默认情况下,如果Java进程花费98%以上的时间执行GC,并且每次只有不到2%的堆被恢复,则JVM抛出此错误。换句话说,这意味着我们的应用程序几乎耗尽了所有可用内存,垃圾收集器花了太长时间试图清理它,并多次失败。

原文链接:https://developer.aliyun.com/ask/59564?spm=a2c6h.13159736

Hadoop任务可能引起OOM错误的原因有很多。一般情况下,首先检查是否重设了hadoop参数:mapred.child.java.opts,一般设为-Xmx2000m,即使用2G的最大堆内存。
Hive中可能引起OOM的原因及相关的修复设定如下表所示:

原因:map aggregation
map aggregation使用哈希表存储group by/distinct key和他们的aggregation结果。
aggregate结果字段过多,或group by/distinct key的散度过大,可能导致内存占用过多。
修复:
减小hive.map.aggr.hash.percentmemory设定(默认为0.5,即使用50%的child堆内存)。

原因:join
join需要cache所有相同join key的非驱动表的记录
修复:
检查是否把大表设定为驱动表(大表写在join的最右边)。
如果已经设定正确的驱动表,减小hive.join.emit.interval设定(默认为1000,即每1000行的join结果集输出一次)。

原因:map join
map join需要cache全部小表的所有数据
修复:
检查小表是否足够小。如果小表超过1G,考虑不要使用map join。

--加了以下参数解决了问题

set mapreduce.map.java.opts=-Xmx3072m;
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=16;
set hive.exec.compress.output=true;
set hive.map.aggr.hash.percentmemory=0.3;
set hive.join.emit.interval=600;
set hive.auto.convert.join = false;

Hive Runtime Error while processing row at

--加以下参数
set hive.vectorized.execution.enabled=false;
set hive.vectorized.execution.reduce.enabled=false;

FAILED: Class com.shield.xlab.hive.sql.UDFsha not found

jar包名被写错,UDFSha

最新文章

  1. Linux面试知识点总结
  2. php : 基础(2)
  3. __block修饰变量以及代码块的用法
  4. Jmeter外部函数引用
  5. Snippet: align a TextView around an image
  6. 剑指Offer07 斐波那契数列
  7. ssh,telnet远程AIX以及数据传输问题
  8. ROS的文件系统
  9. mssql server 函数大全
  10. android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
  11. Scrapy框架--使用cookie
  12. CS:APP3e 深入理解计算机系统_3e ShellLab(tsh)实验
  13. Nagios详解(基础、安装、配置文件解析及监控实例)
  14. 如何定位“Operating system error 32(failed to retrieve text for this error. Reason: 15105)”错误中被占用的文件
  15. C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
  16. FFmpeg实现将图片转换为视频
  17. [Javascript] Prototype, hasOwnProperty(), valueOf() and toString() methods.
  18. python接口自动化7-参数关联【转载】
  19. mysql中group by分组
  20. 导入maven多模块项目 出现的问题

热门文章

  1. win8.1默认输入法设置
  2. 文档驱动开发模式在 AIMS 中的应用与实践
  3. Centos7 密钥对登陆(适用于群晖DSM)
  4. 坐上JDK8时间SDK的小船,带你遨游UNIX时间戳与时区的小太空~
  5. Spring MVC 接收 LocalDate、LocalTime 和 LocalDateTime Java 8 时间类型参数
  6. Java 使用 mail.jar 实现邮件发送
  7. kafka(一)入门
  8. linux下安装nacos
  9. Canal:同步mysql增量数据工具,一篇详解核心知识点
  10. ProBuilder快速原型开发技术 ---ProBuilder基础操作