Memory 内存使用过多

Memory 内存使用过多,memory,pyspark,jupyterhub,Memory,Pyspark,Jupyterhub,我已经设置了一个JupyterHub,并为它配置了一个pyspark内核。当我打开pyspark笔记本(用户名为Jeroen)时,添加了两个进程,一个Python进程和一个Java进程。Java进程分配了12g虚拟内存(见图)。当在1B数字范围内运行测试脚本时,它会增长到22g。当我们与多个用户一起使用此服务器时,这是否需要担心?如果是这样的话,我如何防止Java分配这么多内存 您不必担心虚拟内存的使用,这里的保留内存更为重要(在RES列) 您可以使用传递给spark的--驱动程序内存选项控制J

我已经设置了一个JupyterHub,并为它配置了一个pyspark内核。当我打开pyspark笔记本(用户名为Jeroen)时,添加了两个进程,一个Python进程和一个Java进程。Java进程分配了12g虚拟内存(见图)。当在1B数字范围内运行测试脚本时,它会增长到22g。当我们与多个用户一起使用此服务器时,这是否需要担心?如果是这样的话,我如何防止Java分配这么多内存


您不必担心虚拟内存的使用,这里的保留内存更为重要(在
RES
列)

您可以使用传递给spark的
--驱动程序内存
选项控制JVM堆使用的大小(如果您在jupyterhub上使用PypSpark内核,您可以在环境中的
PypSpark\u SUBMIT\u ARGS
键下找到它)。这并不完全是应用程序的内存限制(JVM上还有其他内存区域),但非常接近


因此,当您设置了多个用户时,您应该学习他们设置适当的驱动程序内存(处理所需的最低内存),并在完成工作后关闭笔记本电脑

--驱动程序内存似乎限制了使用的内存,因为在缓存大块内存时,设置较低的值会生成OutOfMemory错误。但这并不会减少分配的虚拟内存。考虑到用户有责任设置适当的驱动程序内存并不是一个真正的解决方案。不过,我确实配置了一个cull空闲例程来关闭空闲内核。您不需要担心虚拟内存。它是虚拟的,所以是免费的;-)奇怪的是,缓存时会出现OOM—您是否在本地模式下运行pyspark?如果您进入Thread,缓存的RDD将存储在executors上,标准驱动程序内存(1GB AFAIR)将足以满足大多数使用。谢谢,是的,我已将驱动程序内存增加到1GB,此后再也没有见过OOM。我们在HPC(48threads,65G RAM)上运行,而不是在集群上运行。