猿问

星星之火java.lang.OutOfMemoryError:Java堆空间

星星之火java.lang.OutOfMemoryError:Java堆空间

我的集群:一个主节点,11个从节点,每个节点有6GB内存。

我的设置:

spark.executor.memory=4g, Dspark.akka.frameSize=512

问题是:

第一,我从HDFS读取了一些数据(2.19 GB)到RDD:

val imageBundleRDD = sc.newAPIHadoopFile(...)

第二,在这个RDD上做些什么:

val res = imageBundleRDD.map(data => {
                               val desPoints = threeDReconstruction(data._2, bg)
                                 (data._1, desPoints)
                             })

最活的,刚过去的,提供给人类发展战略的产出:

res.saveAsNewAPIHadoopFile(...)

当我运行我的程序时,它显示:

.....
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:24 as TID 33 on executor 9: Salve7.Hadoop (NODE_LOCAL)
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:24 as 30618515 bytes in 210 ms
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:36 as TID 34 on executor 2: Salve11.Hadoop (NODE_LOCAL)
14/01/15 21:42:28 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:36 as 30618515 bytes in 449 ms
14/01/15 21:42:28 INFO cluster.ClusterTaskSetManager: Starting task 1.0:32 as TID 35 on executor 7: Salve4.Hadoop (NODE_LOCAL)
Uncaught error from thread [spark-akka.actor.default-dispatcher-3] shutting down JVM since 'akka.jvm-exit-on-fatal-error' 
is enabled for ActorSystem[spark]
java.lang.OutOfMemoryError: Java heap space

任务太多了?

PS当输入数据约为225 MB时,一切正常。

我怎样才能解决这个问题?


德玛西亚99
浏览 546回答 3
3回答

森林海

若要向此添加经常未讨论的用例,我将在提交Spark应用通过spark-submit在……里面本土化模式。根据手册掌握阿帕奇火花通过贾切克·拉斯科夫斯基:您可以在本地模式下运行星火。在这种非分布式的单JVM部署模式中,SPark在同一个JVM中生成所有的执行组件-驱动程序、执行器、后端和主程序。这是唯一使用驱动程序执行的模式。因此,如果你正在经历OOM错误与heap,就可以调整driver-memory而不是executor-memory.以下是一个例子:spark-1.6.1/bin/spark-submit   --class "MyClass"   --driver-memory 12g   --master local[*]    target/scala-2.10/simple-project_2.10-1.0.jar

FFIVE

看一看启动脚本这里设置了Java堆大小,在运行SparkWorker之前,您似乎没有设置这个大小。# Set SPARK_MEM if it isn't already set since we also use it for this process SPARK_MEM=${SPARK_MEM:-512m} export SPARK_MEM # Set JAVA_OPTS to be able to load native libraries and to set heap size JAVA_OPTS="$OUR_JAVA_OPTS" JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$SPARK_LIBRARY_PATH" JAVA_OPTS="$JAVA_OPTS -Xms$SPARK_MEM -Xmx$SPARK_MEM"您可以找到要部署脚本的文档。这里.
随时随地看视频慕课网APP

相关分类

Java
我要回答