yarn模式下提交的spark应用,其container资源是如何分配的?
基于pyspark编写的spark程序,在standone模式下提交可正常跑完,但在yarn模式下提交老是报内存超过container物理内存上限的错误,导致container自动被kill掉了(两种模式下的资源配置是一样的)。分析发现pyspark程序运行时,在executor端的java进程默认占用了executor-memory的内存大小,导致额外的python进程运行时会出现container内存不足的错误(实际上python进程运行的时候,java进程处于等待状态,所以standone模式下不会报内存不足的错误)。
请问各位大神,spark yarn 模式下,设置的executor-memory值与container内存大小值是否是一一对应关系?如何有效解决上述问题呢?(已尝试调整executor-memory的大小,仍然出现上述问题,是否需要集群哪块进行设置?)