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