FAQ-关于mammut运行任务内存问题定位方发与解决方案

问题描述

问题描述/异常栈

内存问题定位方式

解决方案

1.首先在日志页面查看错误日志如果有 OutOf Memory 或者beyond physical memory limits之类错误信息就可以基本判定为内存溢出问题

2.如果没有发现上述内容在日志页面搜索

FAQ-关于mammut运行任务内存问题定位方发与解决方案 - 图1

找到类似的字符串:
`The url to track the job: http://hadoop1235.hz.163.org:8088/proxy/application_1538204456867_796444/`
提取里面的 application_1538204456867_796444

然后去yarn里面搜索这个任务

FAQ-关于mammut运行任务内存问题定位方发与解决方案 - 图2

找到这个任务之后点击点击History连接,在这里如果有failed的点击failed进入页面后如果能看到OutOf Memory 或者beyond physical memory limits之类错误信息就可以判定为内存问题

FAQ-关于mammut运行任务内存问题定位方发与解决方案 - 图3 FAQ-关于mammut运行任务内存问题定位方发与解决方案 - 图4 FAQ-关于mammut运行任务内存问题定位方发与解决方案 - 图5

**sqoop解决方案**  
在更多参数输入框内输入:

-D mapreduce.map.memory.mb=8192 

注意这里调到了8G的内存,一般建议是先调大到4G然后再调整成8G,因为资源给的比较大所以请谨慎使用  

**Hive SQL解决方案**  
在编写的hive sql的开头添加:

set mapreduce.map.memory.mb=8192;
set mapreduce.map.java.opts=-Xmx7000m;
set mapreduce.reduce.memory.mb=8192;
set mapreduce.reduce.java.opts=-Xmx7000m;

说明:

如果能区分出是map端问题使用参数:  
set mapreduce.map.memory.mb=8192;  
set mapreduce.map.java.opts=-Xmx7000m;  
如果能区分出是reduce端问题使用参数:  
set mapreduce.reduce.memory.mb=8192;  
set mapreduce.reduce.java.opts=-Xmx7000m;  
如果启动的map数量过多需要调节参数:  
yarn.app.mapreduce.am.resource.mb 内存

**Spark内存问题**  

Yarn Client模式  
内存常用参数:  
spark.driver.memory  
spark.executor.memory  
spark.yarn.am.memory  

Yarn Cluster模式  
设置amdriver内存等效

**MR内存问题**  

参数:

mapreduce.map.memory.mb  
mapreduce.reduce.memory.mb

问题原因

待补充;

作者:qianzhaoyuan