Gli*_*ide 8 hadoop-yarn apache-spark
我的Spark作业因YARN错误而失败Container killed by YARN for exceeding memory limits 10.0 GB of 10 GB physical memory used。
凭直觉,我将核心数从减少5到1,并且作业成功完成。
我没有增加,executor-memory因为这10g是我的YARN群集的最大值。
我只是想确认我的直觉。减少executor-cores消费数量会减少executor-memory吗?如果是这样,为什么?
spark.executor.cores = 5, spark.executor.memory=10G
Run Code Online (Sandbox Code Playgroud)
这意味着一个 executor 可以并行运行 5 个任务。这意味着 10 GB 需要由 5 个任务共享。因此平均有效 - 每个任务将有 2 GB 可用。如果所有任务消耗超过 2 GB,那么整个 JVM 最终将消耗超过 10 GB,因此 YARN 将终止容器。
spark.executor.cores = 1, spark.executor.memory=10G
Run Code Online (Sandbox Code Playgroud)
这意味着执行程序只能运行 1 个任务。这意味着 10 GB 完全可用于 1 个任务。因此,如果任务使用超过 2 GB 但少于 10 GB,它会正常工作。你的工作就是这种情况,所以它奏效了。