1. 程式人生 > >spark遭遇空間已滿的解決

spark遭遇空間已滿的解決

-----------------------------------------------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,然後找到最大檔案刪除就可以了