本篇內(nèi)容主要講解“JVM GC導(dǎo)致的shuffle文件拉取失敗怎么辦”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“JVM GC導(dǎo)致的shuffle文件拉取失敗怎么辦”吧!
網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團(tuán)隊。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營銷思維進(jìn)行網(wǎng)站設(shè)計、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
有時會出現(xiàn)的一種情況,非常普遍,在spark的作業(yè)中;shuffle file not found。(spark作業(yè)中,非常非常常見的)而且,有的時候,它是偶爾才會出現(xiàn)的一種情況。有的時候,出現(xiàn)這種情況以后,會重新去提交stage、task。重新執(zhí)行一遍,發(fā)現(xiàn)就好了。沒有這種錯誤了。
log怎么看?
用client模式去提交你的spark作業(yè)。比如standalone client;yarn client。一提交作業(yè),直接可以在本地看到刷刷刷更新的log。
spark.shuffle.io.maxRetries 3 //意思就是說,shuffle文件拉取的時候,如果沒有拉取到(拉取失?。疃嗷蛑卦噹状危〞匦吕状挝募?,默認(rèn)是3次。 spark.shuffle.io.retryWait 5s //意思就是說,每一次重試?yán)∥募臅r間間隔,默認(rèn)是5s鐘。
默認(rèn)情況下,假如說第一個stage的executor正在進(jìn)行漫長的full gc。第二個stage的executor嘗試去拉取文件,結(jié)果沒有拉取到,默認(rèn)情況下,會反復(fù)重試?yán)?次,每次間隔是五秒鐘。最多只會等待3 * 5s = 15s。如果15s內(nèi),沒有拉取到shuffle file。就會報出shuffle file not found。
針對這種情況,我們完全可以進(jìn)行預(yù)備性的參數(shù)調(diào)節(jié)。增大上述兩個參數(shù)的值,達(dá)到比較大的一個值,盡量保證第二個stage的task,一定能夠拉取到上一個stage的輸出文件。避免報shuffle file not found。然后可能會重新提交stage和task去執(zhí)行。那樣反而對性能也不好。
spark.shuffle.io.maxRetries 60 spark.shuffle.io.retryWait 60s
最多可以忍受1個小時沒有拉取到shuffle file。只是去設(shè)置一個最大的可能的值。full gc不可能1個小時都沒結(jié)束吧(低概率,沒有絕對)。這樣呢,就可以盡量避免因為gc導(dǎo)致的shuffle file not found,無法拉取到的問題。
到此,相信大家對“JVM GC導(dǎo)致的shuffle文件拉取失敗怎么辦”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!