【问题标题】:java.lang.OutOfMemoryError when running the DeepLearning4J MNIST sample运行 DeepLearning4J MNIST 示例时出现 java.lang.OutOfMemoryError
【发布时间】:2016-07-31 02:23:35
【问题描述】:

这是我在单节点本地 Spark 集群上所做的:

git clone https://github.com/deeplearning4j/dl4j-spark-cdh5-examples.git
cd dl4j-spark-cdh5-examples.git
mvn package
export SPARK_WORKER_MEMORY=13g
spark-submit --class org.deeplearning4j.examples.cnn.MnistExample ./target/dl4j-spark-cdh5-examples-1.0-SNAPSHOT.jar

这就是我得到的:

Caused by: java.lang.OutOfMemoryError: Java heap space

这里是完整的堆栈跟踪:

spark-submit --class org.deeplearning4j.examples.cnn.MnistExample ./target/dl4j-spark-cdh5-examples-1.0-SNAPSHOT.jar 21:21:13,414 信息 ~ 加载数据....

警告:无法加载本机系统 BLAS ND4J 性能将 减少 请安装本机 BLAS 库,例如 OpenBLAS 或 IntelMKL 详情请见http://nd4j.org/getstarted.html#open

21:21:20,571 信息 ~ 构建模型.... 21:21:20,776 警告 ~ 目标 功能自动设置为最小化。在神经网络中设置 stepFunction 配置更改默认设置。 21:21:20,886 信息 ~ --- 开始网络训练 --- [Stage 0:> (0 + 6) / 6]

[Stage 0:> (0 + 6) / 6]线程“dispatcher-event-loop-3”中的异常 java.lang.OutOfMemoryError:Java 堆空间 21:24:12,358 错误 ~ 阶段 0.0 (TID 0) 中的任务 0.0 中的异常 java.lang.IllegalStateException:未读块数据 java.io.ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1382) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:76) 在 org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:115) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:194) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 21:24:12,358 错误 ~ 阶段 0.0 (TID 5) java.lang.OutOfMemoryError 中的任务 5.0 中的异常: java.lang.reflect.Array.newInstance(Array.java:70) 处的 Java 堆空间 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,358 错误 ~ 阶段 0.0 (TID 3) 中任务 3.0 中的异常 java.lang.OutOfMemoryError:Java 堆空间位于 java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,358 错误 ~ 阶段 0.0 (TID 1) 中任务 1.0 中的异常 java.lang.IllegalStateException:未读块数据 java.io.ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1382) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:76) 在 org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:115) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:194) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 21:24:12,358 错误 ~ 阶段 0.0 (TID 2) java.lang.OutOfMemoryError 中的任务 2.0 中的异常: java.lang.reflect.Array.newInstance(Array.java:70) 处的 Java 堆空间 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,375 错误〜线程线程中未捕获的异常[执行程序任务 启动 worker-5,5,main] java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,375 错误〜线程线程中未捕获的异常[执行程序任务 启动 worker-3,5,main] java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,375 错误〜线程线程中未捕获的异常[执行程序任务 启动 worker-2,5,main] java.lang.OutOfMemoryError: Java heap space at java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,383 错误 ~ 阶段 0.0 中的任务 5 失败 1 次;中止工作 线程“主”org.apache.spark.SparkException 中的异常:作业 由于阶段失败而中止:阶段 0.0 中的任务 5 失败 1 次,大多数 最近失败:在 0.0 阶段丢失任务 5.0(TID 5,本地主机): java.lang.OutOfMemoryError:Java 堆空间位于 java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204)

驱动程序堆栈跟踪:在 org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1431) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1419) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1418) 在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 在 org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1418) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) 在 scala.Option.foreach(Option.scala:236) 在 org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:799) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1640) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1599) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1588) 在 org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) 在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:620) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1832) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1845) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1858) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1929) 在 org.apache.spark.rdd.RDD.count(RDD.scala:1157) 在 org.apache.spark.api.java.JavaRDDLike$class.count(JavaRDDLike.scala:440) 在 org.apache.spark.api.java.AbstractJavaRDDLike.count(JavaRDDLike.scala:46) 在 org.deeplearning4j.spark.impl.multilayer.SparkDl4jMultiLayer.fitDataSet(SparkDl4jMultiLayer.java:239) 在 org.deeplearning4j.examples.cnn.MnistExample.main(MnistExample.java:132) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 原因: java.lang.OutOfMemoryError:Java 堆空间位于 java.lang.reflect.Array.newInstance(Array.java:70) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 在 sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.apache.spark.rdd.ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 在 org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12,769 错误 ~ 阶段 0.0 (TID 4) 中任务 4.0 中的异常 org.apache.spark.TaskKilledException 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:204) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 21:30:18,649 错误 ~ 未捕获 线程 Thread-3 org.apache.spark.SparkException 中的异常:错误 发送消息 [message = StopBlockManagerMaster] 在 org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:118) 在 org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:77) 在 org.apache.spark.storage.BlockManagerMaster.tell(BlockManagerMaster.scala:225) 在 org.apache.spark.storage.BlockManagerMaster.stop(BlockManagerMaster.scala:217) 在 org.apache.spark.SparkEnv.stop(SparkEnv.scala:97) 在 org.apache.spark.SparkContext$$anonfun$stop$12.apply$mcV$sp(SparkContext.scala:1756) 在 org.apache.spark.util.Utils$.tryLogNonFatalError(Utils.scala:1229) 在 org.apache.spark.SparkContext.stop(SparkContext.scala:1755) 在 org.apache.spark.SparkContext$$anonfun$3.apply$mcV$sp(SparkContext.scala:596) 在 org.apache.spark.util.SparkShutdownHook.run(ShutdownHookManager.scala:267) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ShutdownHookManager.scala:239) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply(ShutdownHookManager.scala:239) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply(ShutdownHookManager.scala:239) 在 org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1765) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply$mcV$sp(ShutdownHookManager.scala:239) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply(ShutdownHookManager.scala:239) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply(ShutdownHookManager.scala:239)

有什么想法吗?

【问题讨论】:

    标签: apache-spark mnist deeplearning4j


    【解决方案1】:

    就像任何其他 spark 工作一样,考虑碰撞从属设备和主设备的 xmlx。

    Spark 有 2 种内存:spark Standalone 的 executor 和 executors。

    请看:How to set Apache Spark Executor memory

    【讨论】:

    • 当我在独立模式下运行时恕我直言,我必须通过“--driver-memory 8g”选项而不是增加工人的堆大小......
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2016-02-01
    相关资源
    最近更新 更多