Hadoop运行离线任务,Hive跑MR任务时候,出现Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded

一、首先抛出异常问题

二、引发问题原因:

表连接,左表数据100W,右表数据 300W,进行左右表进行表关联,进行Count进行数据统计,等待运行结果!!!

分析问题,查看上述运行流程,即可了解上述异常,查看详细日志信息,URL:即可见到首页出现的问题

三、查看页面可见,有如下图片

四、由上图和图一可知,此MR程序为 Map端出错,出错程序问题问  内存不足,初步怀疑为 Map端内存不足,因为Hadoop体系太大,配置文件最好不要随意更改,调错,需要一个个测试修改,查询百度资料,查询得知:

可以进入HiveClient查看当前客户端的Map端和Reduce端的内存分配情况

①、查看Map端运行环境的内存

set mapreduce.map.java.opts;

②、查看Reduce端运行环境的内存

set mapreduce.reduce.java.opts;

③、查看Map端和Reduce端一个Job可以申请的内存资源

set mapreduce.map.memory.mb;                                    set mapreduce.reduce.memory.mb;

解释

mapreduce.map.memory.mb: 一个 Map Task 可使用的内存上限(单位:MB),默认为 1024。如果 Map Task 实际使用的资源量超过该值,则会被强制杀死。
mapreduce.reduce.memory.mb: 一个 Reduce Task 可使用的资源上限(单位:MB),默认为 1024。如果 Reduce Task 实际使用的资源量超过该值,则会被强制杀死。

优化前:

修改后:

再次运行百万 SQL

当前问题 已经解决 

参考文档:

https://www.cnblogs.com/yjt1993/p/9483032.html

http://ju.outofmemory.cn/entry/224490

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值