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

Ren*_*ien 5 hadoop scala out-of-memory executors apache-spark

I\xe2\x80\x99m 尝试在 Yarn 客户端上运行 Spark 作业。我有两个节点,每个节点都有以下配置。\n在此输入图像描述

\n\n

I\xe2\x80\x99m 得到 \xe2\x80\x9cExecutorLostFailure (执行器 1 丢失)\xe2\x80\x9d。

\n\n

我已经尝试了大部分 Spark 调优配置。我已经减少到 1 个执行程序丢失,因为最初我有 6 个执行程序失败。

\n\n

这些是我的配置(我的火花提交):

\n\n
\n

HADOOP_USER_NAME=hdfs Spark-submit --class genkvs.CreateFieldMappings\n --master 纱线客户端 --driver-内存 11g --executor-内存 11G --total-executor-cores 16 --num-executors 15 --conf " Spark.executor.extraJavaOptions=-XX:+UseCompressedOops\n -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" --conf Spark.akka.frameSize=1000 --conf Spark.shuffle.memoryFraction=1 --conf\n Spark .rdd.compress=true --conf\n spark.core.connection.ack.wait.timeout=800\n my-data/lookup_cache_spark- assembly-1.0-SNAPSHOT.jar -h\n hdfs://hdp-node -1.zone24x7.lk:8020 -p 800

\n
\n\n

我的数据大小是 6GB,我在工作中执行 groupBy 操作。

\n\n
def process(in: RDD[(String, String, Int, String)]) = {\n    in.groupBy(_._4)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我\xe2\x80\x99m是Spark的新手,请帮我找出我的错误。我\xe2\x80\x99m已经挣扎了至少一周了。

\n\n

预先非常感谢您。

\n

jav*_*dba 1

弹出两个问题:

  • Spark.shuffle.memoryFraction 设置为 1。为什么选择它而不是保留默认值 0.2 ?这可能会使其他非洗牌操作挨饿

  • 您只有 11G 可供 16 个核心使用。如果只有 11G,我会将您工作中的工作人员数量设置为不超过 3 个 - 最初(为了解决执行程序丢失的问题)只需尝试 1。如果有 16 个执行程序,每个执行程序的大小约为 700mb - 那么他们得到的大小就不足为奇了OOME/执行者丢失。