spark outof memory:GC limit错误如何处理?

一头大菜鸟 2014-10-21 04:29:29
小弟最近刚开始学习spark现在用spark streaming实现userbased的推荐系统
那么问题来了:

我是直接让系统在maptopair的时候把整个训练集load进来。训练集的格式如下:

userid,itemid,rating
userid,itemid,rating
....
这样使用String.split数组去解析的时候总是报out od memory,GC limit错误,可能是读取的速度太快了,GC不能很快的回收,因为我一个数组就代表着一行,而且一行的量并不大,计算的时候小于回收的时间。。

我试着换了64G的内存仍是是这个问题。。

现在不知道如何解决比较好?用spark的序列化机制可以解决这个问题吗?最好别修改训练集的格式。。。
望各位大虾给点提示。。


谢谢
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以试试Spark的Kryo序列化方式。也可以在spark-env.sh文件中的SPARK_JAVA_OPTS参数上添加 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps ,看下GC的详细信息。也可以试试调整下 spark.storage.memoryFraction这个参数。
一头大菜鸟 2014-11-18
  • 打赏
  • 举报
回复
你好 能加我QQ476405367吗?遇到问题想请教请教。。
一头大菜鸟 2014-11-17
  • 打赏
  • 举报
回复
实在不好意思好久没上网了刚看到。。 训练集有110M左右。spark集群节点用了10个WORKERS和3个WORKERS有试过了都报错。。 执行的内存也从10G到40G使用过了。。 感觉是不是JVM内部的问题。。
  • 打赏
  • 举报
回复
训练集多大?spark集群有多少节点?执行内存设置的是多大?

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧