Spark内存溢出

一.场景:

在实时任务 注册和激活相关的任务 GamePublishKpi 中,程序运行一段时间,就会报内存溢出

 

二.分析方法

  1.  ps -ef | grep  GamePublishKpi  找出运行的程序
  2.   jmap -heap 27075(进程号)  查看该程序的运行过程中内存的使用情况

该命令对应的参数解读: http://blog.csdn.net/yrpting/article/details/52859721

 

本次遇到的问题就是  Old Generation  内存持续增长,也就是说一些内存没有释放

 

三.分析

 代码看了很多遍 该释放的内存都释放了,应该是spark内部框架的问题,查看资料了解到 spark-ui 默认显示1000个jobs的运行情况,没有达到1000个jobs时,会缓存运行状况在内存中,内存随着job数量增加而增加,所以可以通过参数修改spark-ui的 显示个数

 

spark-submit \

--masteryarn-client  \

--confspark.ui.retainedJobs=12 \

--confspark.sql.ui.retainedExecutions=30 \

--executor-memory 2G\

--classcom.xiaopeng.bi.gamepublish.GamePublishKpi \

/home/hduser/projs/xiaopeng_bi_kpi_regi.jar600

 

参考资料:

http://宋亚飞.中国/post/228

你可能感兴趣的:(spark)