Apache spark 运行DeepLearning4J MNIST示例时发生java.lang.OutOfMemoryError
以下是我在单节点本地spark群集上所做的工作:Apache spark 运行DeepLearning4J MNIST示例时发生java.lang.OutOfMemoryError,apache-spark,mnist,deeplearning4j,Apache Spark,Mnist,Deeplearning4j,以下是我在单节点本地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/dl
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提交——类org.deeplearning4j.examples.cnn.MnistExample
./target/dl4j-spark-cdh5-examples-1.0-SNAPSHOT.jar 21:21:13414信息~
加载数据
警告:无法加载本机系统BLAS ND4J性能将受到影响
请安装本机BLAS库,如OpenBLAS或
有关更多详细信息,请参阅IntelMKL
21:21:20571信息~构建模型。。。。21:21:20776警告~目标
函数自动设置为最小化。神经网络中的集阶跃函数
配置以更改默认设置。21:21:20886信息~---
开始网络培训---[阶段0:>(0+6)/6]
[阶段0:>(0+6)/6]线程“dispatcher-event-loop-3”中出现异常
java.lang.OutOfMemoryError:java堆空间21:24:12358错误~
阶段0.0(TID 0)中任务0.0中的异常
java.lang.IllegalStateException:位于的未读块数据
ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421)
位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1382)
在
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:12358错误~
阶段0.0(TID 5)中任务5.0中的异常java.lang.OutOfMemoryError:
Java.lang.reflect.Array.newInstance(Array.Java:70)处的Java堆空间
位于java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)位于
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(未知源)
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)
在
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)
在
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)位于
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)
在
ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
在
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
在
ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74)
位于org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204)
21:24:12358错误~第0.0阶段任务3.0中出现异常(TID 3)
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)位于
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(未知源)
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)
在
ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
在
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)