내 클러스터 : 마스터 1 개, 슬레이브 11 개, 각 노드에는 6GB 메모리가 있습니다.
내 설정 :
spark.executor.memory=4g, Dspark.akka.frameSize=512
여기 문제가 있습니다 :
먼저 HDFS에서 RDD로 일부 데이터 (2.19GB)를 읽었습니다.
val imageBundleRDD = sc.newAPIHadoopFile(...)
둘째 ,이 RDD에서 무언가를 수행하십시오.
val res = imageBundleRDD.map(data => {
val desPoints = threeDReconstruction(data._2, bg)
(data._1, desPoints)
})
마지막 으로 HDFS로 출력 :
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 : 입력 데이터가 약 225MB이면 모든 것이 정상입니다.
이 문제를 어떻게 해결할 수 있습니까?