Scala Spark:执行器丢失故障(添加groupBy作业后)

Scala Spark:执行器丢失故障(添加groupBy作业后),scala,hadoop,apache-spark,out-of-memory,executors,Scala,Hadoop,Apache Spark,Out Of Memory,Executors,我正试着在客户机上运行Spark作业。我有两个节点,每个节点都有以下配置。 我得到了“执行者丢失失败(执行者1丢失)” 我已经尝试了大多数Spark调优配置。我已经减少到一个执行器失败,因为最初我有6个执行器失败 以下是我的配置(我的spark提交): HADOOP_USER_NAME=hdfs spark submit——类genkvs.CreateFieldMappings --主纱线客户端--驱动程序内存11g--执行器内存11g--执行器内核总数16--num executors 15

我正试着在客户机上运行Spark作业。我有两个节点,每个节点都有以下配置。

我得到了“执行者丢失失败(执行者1丢失)”

我已经尝试了大多数Spark调优配置。我已经减少到一个执行器失败,因为最初我有6个执行器失败

以下是我的配置(我的spark提交):

HADOOP_USER_NAME=hdfs spark submit——类genkvs.CreateFieldMappings --主纱线客户端--驱动程序内存11g--执行器内存11g--执行器内核总数16--num executors 15--conf“spark.executor.extraJavaOptions=-XX:+UseCompressedOops -XX:+PrintGCDetails-XX:+PrintGCTimeStamps”--conf spark.akka.frameSize=1000--conf spark.shuffle.memoryFraction=1--conf spark.rdd.compress=true--conf spark.core.connection.ack.wait.timeout=800 我的数据/lookup\u cache\u spark-assembly-1.0-SNAPSHOT.jar-h hdfs://hdp-node-1.zone24x7.lk:8020 -p 800

我的数据大小是6GB,我的工作是分组

def process(in: RDD[(String, String, Int, String)]) = {
    in.groupBy(_._4)
}
我是Spark的新手,请帮我找出我的错误。我现在至少挣扎了一个星期

提前非常感谢。

有两个问题出现:

  • spark.shuffle.memoryFraction设置为1。为什么选择该选项而不是保留默认值0.2?这可能会导致其他非洗牌操作无法进行

  • 您只有16核的11G可用。如果只有11G,我会将您工作中的员工数量设置为不超过3人——最初(为了克服“遗嘱执行人丢失”问题),请尝试1人。由于有16个执行器,每个执行器的容量大约为700mb——因此,毫不奇怪他们会丢失OOME/executor


最初我遇到以下错误:缺少随机播放0的输出位置。所以我知道我需要增加我的洗牌记忆分数。好的,谢谢你的建议。我会试着给你回复。但它仍然失败-Spark:Executor Lost Failure当我查看堆栈时,它显示:Spark java.lang.OutOfMemoryError:java堆空间异常。我想因为这个原因,它失去了遗嘱执行人。有什么建议吗?我在回答中提到要审判一个遗嘱执行人。您没有足够的内存供集群使用。是的,我试过了。即使只有一个执行人,也会出现同样的问题。