-----------------------------------------------9.22------------------------------------------------------
今天甚是高兴,终于解决了集群内存满的问题,下面记录的是之前的处理内存的方法,一般情况下,
这个解决办法是可以的,但是对于我的集群是不行的,我一直很困扰,因为我的日志都清干净了,
du -h -x --max-depth=1,都显示很小的文件,但是运行df -h就是磁盘已满,这个问题真的困扰了我几个月,
每次我只能把磁盘重新扩容,但是一段时间后,又满了
今天,我无意间看到一篇帖子,这篇帖子介绍了df 和 du命令的不同,这才令我豁然开朗,
du命令扫描的是文件,df扫描的是分区元数据,所以,我把日志文件删掉后,du立即显示的是删除后的文件夹大小,
但是由于我的spark集群没有关闭,导致这个进程没有抛掉对这个文件的句柄,导致,扫描分区元数据并没有被释放,
所以显示一直是满的,我立即重启了spark服务,果然,内存一下子全被释放,困扰多月的问题终于被解决了
关于du df的帖子在这,想深入理解的可以自行查看
-----------------------------------------------以前-------------------------------------------------------
当spark空间不足的时候,你运行jps或者spark-shell时就会报错,我已经遇到很多次了,几乎都是日志满了
OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory file: 132216
这时运行df -h就会发现一个空间爆满,然后要查看是那个文件占用了空间,这个时候使用
du -h -x --max-depth=1
一定要加-x,这个时候你看到的才是影响spark的空间,否则就是整个服务器的空间,
然后找到占用最多的文件,一般是var/log,然后找到最大文件删除就可以了