java.io.IOException: No space left on device

java.io.IOException: No space left on device 錯誤

今天碰到比較奇怪的問題:

複製代碼
 INFO util.Utils: Fetching http://192.168.31.160:33039/jars/spark_study_java-0.0.1-SNAPSHOT-jar-with-dependencies.jar to /tmp/spark-446068a4-aaa4-4277-b009-908bf0d4ecac/executor-dcc3175b-7d19-4485-81e1-bf31a83a66b4/spark-3f849149-bcfb-44a2-90f6-c71f31098c30/fetchFileTemp8558073324247536081.tmp
ERROR executor.Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.io.IOException: No space left on device
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:345)
    at org.apache.spark.util.Utils$$anonfun$copyStream$1.apply$mcJ$sp(Utils.scala:286)
    at org.apache.spark.util.Utils$$anonfun$copyStream$1.apply(Utils.scala:252)
    at org.apache.spark.util.Utils$$anonfun$copyStream$1.apply(Utils.scala:252)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1206)
    at org.apache.spark.util.Utils$.copyStream(Utils.scala:292)
    at org.apache.spark.util.Utils$.downloadFile(Utils.scala:415)
    at org.apache.spark.util.Utils$.doFetchFile(Utils.scala:557)
    at org.apache.spark.util.Utils$.fetchFile(Utils.scala:356)
複製代碼

總是報錯,試了網上說的

第一種:修改配置文件spark-env.sh,把臨時文件引入到一個自定義的目錄中去即可

export SPARK_LOCAL_DIRS=/home/utoken/datadir/spark/tmp

第二種:偷懶方式,針對tmp目錄不啓用tmpfs,直接修改/etc/fstab

 

幾種解決辦法也還是不行,後來通過df -h 查看兩個work節點 /dev/mapper/vg_spark1-lv_root 都佔滿了,這是怎麼回事,經過查找,原來是自己不斷測試程序,.jar 包不斷上傳到work節點上,由於.jar 是帶有依賴的,所以比較大。不斷上傳使work【/usr/local/spark-1.6.1/work】節點的目錄空間滿了。

 加入監控腳本:rm -rf   /usr/local/spark-1.6.1-bin-hadoop2.3/work/app-$(date -d '-2 day' +\%Y\%m\%d)*     定時刪除兩天之前的work目錄中的jar包文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章