Spark mllib svd 给出:Java OutOfMemory 错误
Spark mllib svd gives: Java OutOfMemory Error
我正在使用 mllib 的 svd 库对大矩阵进行降维:
数据约20G,
并且spark内存为60G
我收到以下警告和错误消息:
WARN ARPACK: Failed to load implementation from:
com.github.fommil.netlib.NativeSystemARPACK WARN ARPACK: Failed to
load implementation from: com.github.fommil.netlib.NativeRefARPACK
WARN BLAS: Failed to load implementation from:
com.github.fommil.netlib.NativeSystemBLAS WARN BLAS: Failed to load
implementation from: com.github.fommil.netlib.NativeRefBLAS Exception
in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:2766)
at org.apache.spark.mllib.linalg.EigenValueDecomposition$.symmetricEigs(EigenValueDecomposition.scala:128)
at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:258)
at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:190)
为了解决警告消息,我使用以下命令构建 Spark (1.2)
-Pnetlib-lgpl
在本地,我在本地测试时警告信息消失了。并且日志显示 netlib 库工作正常:
15/03/05 20:07:03 INFO JniLoader: successfully loaded
/tmp/jniloader7217840327264308862netlib-native_system-linux-x86_64.so
15/03/05 20:07:11 INFO JniLoader: already loaded
netlib-native_system-linux-x86_64.so
然后我安装了用-Pnetlib-lgpl on AWS EMR
编译的Spark (1.2),但是警告和错误信息仍然出现。
我不确定是不是我本地编译的问题,所以我编译Spark (1.2) on AWS EC2
安装到AWS EMR上,但是仍然出现警告和错误信息。
谁能告诉我如何解决这个问题?非常感谢!
问题已部分解决。感谢@SeanOwen 的评论。
我收到 java 内存错误的原因是,顶级特征向量的计算是在驱动程序上进行的,所以我需要确保驱动程序节点上有足够的内存。
当spark-submit
与--driver-memory 5G
一起使用时,问题解决。
但警告信息仍然存在。
我正在使用 mllib 的 svd 库对大矩阵进行降维:
数据约20G,
并且spark内存为60G
我收到以下警告和错误消息:
WARN ARPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemARPACK WARN ARPACK: Failed to load implementation from: com.github.fommil.netlib.NativeRefARPACK WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:2766) at org.apache.spark.mllib.linalg.EigenValueDecomposition$.symmetricEigs(EigenValueDecomposition.scala:128) at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:258) at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:190)
为了解决警告消息,我使用以下命令构建 Spark (1.2)
-Pnetlib-lgpl
在本地,我在本地测试时警告信息消失了。并且日志显示 netlib 库工作正常:
15/03/05 20:07:03 INFO JniLoader: successfully loaded /tmp/jniloader7217840327264308862netlib-native_system-linux-x86_64.so 15/03/05 20:07:11 INFO JniLoader: already loaded netlib-native_system-linux-x86_64.so
然后我安装了用-Pnetlib-lgpl on AWS EMR
编译的Spark (1.2),但是警告和错误信息仍然出现。
我不确定是不是我本地编译的问题,所以我编译Spark (1.2) on AWS EC2
安装到AWS EMR上,但是仍然出现警告和错误信息。
谁能告诉我如何解决这个问题?非常感谢!
问题已部分解决。感谢@SeanOwen 的评论。
我收到 java 内存错误的原因是,顶级特征向量的计算是在驱动程序上进行的,所以我需要确保驱动程序节点上有足够的内存。
当spark-submit
与--driver-memory 5G
一起使用时,问题解决。
但警告信息仍然存在。