如何调出内存异常火花

时间:2016-09-12 19:05:39

标签: performance hadoop apache-spark cluster-computing

我有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或因为Heap),我尝试了很多解决方案在spark网站上建议,也在stackOverflow中,我也试着最小化我的代码,我使用MemoryAndDiskStorage,但即使我仍然有这个问题

Ps:我使用这一行是因为我在这个论坛中找到了解决方案

- conf spark.shuffle.memoryFraction = 0

  

我应该最小化核心数量吗?因为我认为如果我使用只有2G内存的16个内核,那么对于随机播放来说是不够的

1 个答案:

答案 0 :(得分:0)

您可以尝试使用 g --executor-memory --driver-memory 选项在命令,将帮助你。

将执行程序内存设置为 2GB 时。然后它只分配原始内存的 0.6% 用于存储和执行,并且 0.5% 作为 {{1}的存储内存原始记忆的。因此,只有 0.6% 的内存可供执行。

你应该理解memory management这个概念。它将帮助您调试应用程序。