Spark为什么会失败,并出现java.lang.OutOfMemoryError:超出了GC开销限制

问题描述 投票:-2回答:1

我正在尝试实现以前在Spark中运行良好的Hadoop Map / Reduce作业。该程序的目的是:

我有1个列表

A = List(c1, a3, b3, Y)List(c1, a3, b3, Y)List(c2, b3, Y))

并且我想创建1个列表,如下所示:

B = List(List(c1, a3, b3),Y)(List(a3, b3),Y)(List(b3),Y)(List(c1, a3, b3),Y)(List(a3, b3),Y)(List(b3),Y)(List(c2, b3),Y)(List(b3),Y))

Spark应用程序的定义如下:

package Project
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import shapeless.ops.tuple.ToArray

import org.apache.log4j.{Level, Logger}


object Test2 {
def lastdAndSelf[A, B](li: List[A], m_Class: String , f: (List[A] ,String ) => B) : List[B] = 
  { if (li == Nil) Nil
    else f(li , m_Class ) :: lastdAndSelf(li.tail ,m_Class,  f)
  }
def main(args: Array[String]) {
    Logger.getLogger("org").setLevel(Level.ERROR)

    val sc = new SparkContext()
    val m_input = args(0)

    val rawData = sc.textFile(m_input)
    val lines = rawData.map(line => line.split(" ").distinct.toList)
    val itemsets = lines.map(line => lastdAndSelf(line.init, line.last , ( x : List[String], y : String ) => (x,y)))
    for (item <- itemsets.collect())
    {
      println("test " + item.mkString)
    }
    sc.stop

  } 
}

Spark似乎将所有内容保留在内存中,直到它爆炸为止

java.lang.OutOfMemoryError:超出了GC开销限制

我可能确实犯了一些基本的错误,但是我找不到任何指向如何从中提出建议的指针,我想知道如何避免这种情况。

由于我是Scala和Spark的专家,所以我不确定问题是来自其中一个还是另一个。我目前正在尝试在自己的笔记本电脑上运行该程序,它适用于元组数组的长度不是很长的输入。

我运行了以下命令:

spark-submit --class Project.Test2 --master spark: //192.169.1.222: 7077 --conf spark.network.timeout = 10000000 --executor-memory 9G --num-executors 7 --executor-cores 4 /home/lamlq/Downloads/PFP03.jar /home/lamlq/Downloads/data_test_full.txt /home/lamlq/Downloads/

并出现以下错误:

19/11/28 10:16:26 WARN Utils:您的主机名Master01解析为环回地址:127.0.1.1;而是使用192.169.1.222(在界面上ens33)19/11/28 10:16:26 WARN Utils:如果需要,请设置SPARK_LOCAL_IP绑定到另一个地址19/11/28 10:16:27 WARN NativeCodeLoader:无法为您的平台加载本地Hadoop库...正在使用内置Java类(如果适用)使用Spark的默认log4j资料:org / apache / spark / log4j-defaults.properties 19/11/28 10:20:02错误实用程序:线程task-result-getter-1中未捕获的异常java.lang.OutOfMemoryError:Java堆空间位于java.lang.reflect.Array.newInstance(Array.java:75)在java.io.ObjectInputStream.readArray(ObjectInputStream.java:1939)在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)在java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)在org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75)在org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:108)在org.apache.spark.scheduler.DirectTaskResult.value(TaskResult.scala:88)在org.apache.spark.scheduler.TaskResultGetter $$ anon $ 3 $$ anonfun $ run $ 1.apply $ mcV $ sp(TaskResultGetter.scala:94)

java arrays scala apache-spark bigdata
1个回答
0
投票

感谢弗拉迪斯拉夫·瓦尔斯拉夫人的支持。我运行了以下命令:

spark-submit --class Project.Test2 --master spark://192.169.1.222:7077 --conf spark.network.timeout = 10000000-执行器内存9G--num-executors 7 --executor-cores 4 /home/lamlq/Downloads/PFP03.jar /home/lamlq/Downloads/data_test_full.txt / home / lamlq / Downloads /

并出现以下错误:

19/11/28 10:16:26 WARN Utils:您的主机名Master01解析为环回地址:127.0.1.1;而是使用192.169.1.222(在界面上ens33)19/11/28 10:16:26 WARN Utils:如果需要,请设置SPARK_LOCAL_IP绑定到另一个地址19/11/28 10:16:27 WARN NativeCodeLoader:无法为您的平台加载本地Hadoop库...正在使用内置Java类(如果适用)使用Spark的默认log4j资料:org / apache / spark / log4j-defaults.properties 19/11/28 10:20:02错误实用程序:线程task-result-getter-1中未捕获的异常java.lang.OutOfMemoryError:Java堆空间位于java.lang.reflect.Array.newInstance(Array.java:75)在java.io.ObjectInputStream.readArray(ObjectInputStream.java:1939)在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)在java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)在org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75)在org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:108)在org.apache.spark.scheduler.DirectTaskResult.value(TaskResult.scala:88)在org.apache.spark.scheduler.TaskResultGetter $$ anon $ 3 $$ anonfun $ run $ 1.apply $ mcV $ sp(TaskResultGetter.scala:94)

© www.soinside.com 2019 - 2024. All rights reserved.