Spark - 具有存储级别内存和磁盘服务器的持久RDD不会将数据存储到磁盘

时间:2016-09-01 13:38:34

标签: java scala apache-spark hdfs apache-spark-1.5

我有一台4台机器(1台主机和3台工人),每台机器有4个内核和16 GB内存,我每个工作节点使用2个内核和8 GB内存

总共有6个核心,24 GB内存。

我在hdfs中有 5Gb数据文件 41块,每个块为128 MB

我正在通过SparkLauncher()启动spark应用程序。

我的spark应用程序是用Scala编写的bayes net算法,我将通过Java启动它。

我厌倦了在Java(org.apache.spark.mllib.regression.LabeledPoint)和Scala(rddLabeledPoints.persist(StorageLevel.MEMORY_AND_DISK_SER())

中坚持rdd.persist(StorageLevel.MEMORY_AND_DISK_SER) RDD

每次启动我的应用程序时,它最多可以计算12个任务并将分区保存到内存中,但之后会开始抛出heap space and out of memory exceptions,而且它甚至不会在磁盘上存储单个分区。

Spark版本是1.6.2,hadoop版本是2.6.0,集群操作系统是ubuntu。

为什么会出现这种情况?即使有足够的空间。 (见第二张图) 为什么即使我使用kryo序列化器,每个分区的内存大约是块大小的5倍。

注意:当我拍摄屏幕截图时,其中一个工作节点抛出了异常并清除了该节点的所有分区数据,这就是为什么在第二张图像中只能看到两个工作节点的原因。

附加屏幕截图以供参考 Job stage details

Rdd storage info

0 个答案:

没有答案