提交此命令时,我的作业失败,并显示错误“容器正在运行,超出了物理内存限制”。
spark-submit --master yarn --deploy-mode cluster --executor-memory 5G --total-executor-cores 30 --num-executors 15 --conf spark.yarn.executor.memoryOverhead=1000
但是将参数-driver-memory 添加到5GB(或更高),作业将无错误结束。
spark-submit --master yarn --deploy-mode cluster --executor-memory 5G --total executor-cores 30 --num-executors 15 --driver-memory 5G --conf spark.yarn.executor.memoryOverhead=1000
集群信息:6个节点,具有120GB的内存。 YARN容器内存最小:1GB
问题是:使用或不使用此参数有什么区别?
答案 0 :(得分:1)
如果增加驱动程序内存可以帮助您成功完成工作,则意味着驱动程序中有大量来自执行程序的数据。通常,驱动程序负责在执行任务后从每个执行程序收集回结果。因此,在您的情况下,增加驱动程序内存似乎有助于将更多结果存储回驱动程序内存中。
如果您阅读了有关执行程序内存,驱动程序内存以及驱动程序与执行程序交互的方式的一些要点,那么您将可以更好地了解自己所处的状况。
希望它会有所帮助。