使用YARN客户端模式时如何防止Spark Executors迷失?

Ume*_*cha 44 hadoop-yarn apache-spark

嗨,我有一个Spark作业,本地运行良好,数据较少,但当我在YARN上安排执行时,我继续得到以下错误,慢慢地所有执行程序都从UI中删除,我的工作失败

15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 8 on myhost1.com: remote Rpc client disassociated
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 6 on myhost2.com: remote Rpc client disassociated
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在yarn-client模式下安排spark作业

 ./spark-submit --class com.xyz.MySpark --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 3g --master yarn-client --executor-memory 2G --executor-cores 8 --num-executors 12  /home/myuser/myspark-1.0.jar
Run Code Online (Sandbox Code Playgroud)

我不知道有什么问题请指导.我是Spark的新手.提前致谢.

wha*_*erg 32

我有一个非常相似的问题.无论我们分配给他们多少内存,我都会丢失许多遗嘱执行人.

如果您使用纱线的解决方案是设置--conf spark.yarn.executor.memoryOverhead=600,或者如果您的群集使用mesos,您可以尝试--conf spark.mesos.executor.memoryOverhead=600.

在spark 2.3.1+中,现在配置选项 --conf spark.yarn.executor.memoryOverhead=600

似乎我们没有为YARN本身留下足够的记忆,而容器因此而被杀死.在设置之后我们已经有了不同的内存不足错误,但没有相同的丢失执行程序问题.

  • 这也适用于`mesos`.我有同样的问题.相反,它是`--conf spark.mesos.executor.memoryOverhead = 600` (3认同)
  • 在Spark版本2.3.1中,配置现在是“ spark.executor.memoryOverhead”,而不是“ spark.yarn.executor.memoryOverhead”。 (3认同)