Spark任务执行期间写临时文件报错导致失败
生活随笔
收集整理的這篇文章主要介紹了
Spark任务执行期间写临时文件报错导致失败
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spark任務在執行期間,有時候會遇到臨時目錄創建失敗,導致任務執行錯誤。
java.io.IOException: Failed to create local dir in ……spark執行過程的文件夾
spark作為并行計算框架,同一個作業會被劃分為多個任務在多個節點執行,reduce的輸入可能存在于多個節點,因此需要shuffle將所有reduce的輸入匯總起來;而shuffle時需要通過diskBlockManage將map結果寫入本地,優先寫入memory store,在memore store空間不足時會創建臨時文件。
memory store的大小取決于spark.excutor.memory參數,默認為spark.excutor.memory*0.6;可通過spark.env中添加配置SPARK_LOCAL_DIRS或程序中設定spark.local.dir,可配置多個路徑,逗號分隔增強io效率。
原因分析
常見原因包括
主要排查手段
進入臨時目錄,查看下臨時目錄當前狀況,嘗試手動創建是否ok。排查:磁盤空間不足,或者磁盤掉載;通過df -h、du -sh或者fdisk查詢磁盤空間。
解決:刪除舊文件釋放空間;或者掛載新盤。
排查:進入spark.local.dir臨時目錄,查詢權限。
解決:修改成正確權限。
臨時目錄文件過多。
在spark.local.dir手動創建臨時目錄時,報錯Too many links……,
排查:查詢文件目錄下是否文件/目錄個數超限,ll | wc -l
解決:刪除舊文件釋放空間;或者掛載新盤。
inode資源不足
排查:查詢磁盤inode資源使用,df -i
解決:刪除舊文件釋放空間;或者掛載新盤。
轉載于:https://www.cnblogs.com/HopkinsCybn/p/10087336.html
總結
以上是生活随笔為你收集整理的Spark任务执行期间写临时文件报错导致失败的全部內容,希望文章能夠幫你解決所遇到的問題。