Apache Spark - Java堆空间错误

时间:2015-07-24 19:35:34

标签: scala amazon-web-services apache-spark

我有一个apache spark应用程序,它执行以下步骤:

inputFile(#s3loc)
mapPartititions(mapper).groupByKey.mapPartitions(reducer).saveAsHadoopFile(params)

当我在一个小的数据大小上运行它时运行正常(大约100个文件,每个文件一个gzip压缩的4k-5MB文件)。当输入大小很大(文件大小相同但文件大小为14k)时,message.serializationbytearray上的java堆空间错误就会出现问题。

我使用我的集群(EMR)进行了一些实验,对于60 m2.2x大型机器的集群大小,每台机器有32个RAM和4个核心我设置了spark.default.parallelism = 960即每个核心4个任务。这引起了与上面相同的错误。当我将这种并行性改为240或320时,我的任务顺利执行但速度非常慢。是什么导致这个堆溢出?我读过的大多数地方建议每个核心大约3-4个任务,这应该使960成为一个不错的选择。如何在不导致堆溢出的情况下增加任务数量?

部分日志(后一部分)可在以下位置找到:http://pastebin.ca/3078231

0 个答案:

没有答案