【发布时间】:2019-01-07 08:33:25
【问题描述】:
我知道生产环境中的spark集群在运行作业时,是处于单机模式的。
在运行作业时,worker 的一些内存溢出点导致 worker 节点进程死亡。
请问如何分析下图所示的错误:
【问题讨论】:
标签: apache-spark
我知道生产环境中的spark集群在运行作业时,是处于单机模式的。
在运行作业时,worker 的一些内存溢出点导致 worker 节点进程死亡。
请问如何分析下图所示的错误:
【问题讨论】:
标签: apache-spark
编辑:这是一个相对常见的问题,如果以下内容对您没有帮助,请查看此问题Spark java.lang.OutOfMemoryError: Java heap space。
这里没有看到你的代码是你应该遵循的过程:
(1) 如果问题主要是由于容器分配中的 Java 分配空间不足引起的,我建议您弄乱您的内存开销设置(如下)。当前值有点高,会导致 vcore 过度旋转。将以下两个设置添加到您的 spark-submit 并重新运行。
--conf "spark.yarn.executor.memoryOverhead=4000m"
--conf "spark.yarn.driver.memoryOverhead=2000m"
(2) 调整 Executor 和 Driver 内存级别。从低处开始爬升。将这些值添加到 spark-submit 语句中。
--driver-memory 10g
--executor-memory 5g
(3) 调整spark submit中Executor Values的个数。
--num-executors ##
(4) 查看工作的 Yarn 阶段并找出代码中存在低效率的地方以及可以添加和替换持久性的地方。我建议认真研究火花调整。
【讨论】: