根据我的理解,当yarn基于spark配置ask分配容器时,yarn会自动将容器大小以“yarn.scheduler.minimum allocation mb”的倍数进行取整。
例如,
yarn.scheduler.minimum-allocation-mb:2 gb
spark.executor.memory:4 gb内存
spark.yarn.executor.memoryoverhead:384 mb
spark executor内存ask to yarn的总容量为[4 gb+384 mb]=4.384 gb
spark向yarn发出4.384 gb容器大小的请求,但是yarn以2 gb的倍数分配大小的容器(yarn.scheduler.minimum allocation mb),因此在本例中,它返回大小为6 gb的容器(四舍五入4.384到6)。因此,spark executor jvm在容器中以6gb大小启动。
因此,原来的spark executor内存ask为4.384gb,而分配的内存为6gb
执行器大小增量=6-4.384 gb=1.6 gb
我的问题是,据我所知,每个spark executor的总内存增加了1.6gb,其中包括executor内存和开销内存,spark executor的总内存增加了1.6gb。是spark.yarn.executor.memoryoverhead(还是)spark.executor.memory?spark如何使用由于Yarn聚集而接收到的额外内存?
暂无答案!
目前还没有任何答案,快来回答吧!