如何调出内存异常spark

问题描述 投票:0回答:1

我有11个节点,每个节点有2G内存和16个核心,我尝试使用这个提交我的spark应用程序

./bin/spark-submit --class myapp.Main --master spark://Name:7077 --conf spark.shuffle.memoryFraction=0 --executor-memory 2G --deploy-mode client /home/mbala/fer/myjars7/etlpersist.jar /home/mfile80.csv 

在 Slaves 文件中,我没有添加启动此命令的节点的 IP,因为我认为在客户端模式下,驱动程序必须在该节点中运行。

但是每当我尝试运行它时,我都会遇到内存不足异常(有时是因为 GC 或堆),我尝试了 Spark 网站以及 stackOverflow 中建议的许多解决方案,我还尝试最小化我的代码,我使用 MemoryAndDiskStorage 但即使这样我仍然有这个问题

Ps:我使用这条线是因为我在这个论坛中找到了它作为解决方案

--conf spark.shuffle.memoryFraction=0 

我应该最小化核心数量吗?因为我觉得如果我用16核,只有2G内存的话,根本不够shuffle

performance hadoop apache-spark cluster-computing
1个回答
0
投票

您能否尝试在命令中使用小

g
--executor-memory
--driver-memory
选项来帮助您。

当您将执行器内存设置为

2GB
时。然后它只分配原始内存的
0.6%
用于存储和执行,并从原始内存的
0.5%
中取出
0.6%
作为存储内存。因此,只有
0.5%
的内存仍然可供执行。

你应该了解内存管理这个概念。它将帮助您调试应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.