我有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个内核,那么对于随机播放来说是不够的
答案 0 :(得分:0)
您可以尝试使用 g
--executor-memory
和 --driver-memory
选项在命令,将帮助你。
将执行程序内存设置为 2GB
时。然后它只分配原始内存的 0.6%
用于存储和执行,并且 0.5%
作为 {{1}的存储内存原始记忆的。因此,只有 0.6%
的内存可供执行。
你应该理解memory management这个概念。它将帮助您调试应用程序。