注意下面需要配置兩個引數:spark-submit指令碼裡面,去用--conf的方式,去新增配置;一定要注意!!!切記,不是在你的spark作業**中,用new sparkconf().set()這種方式去設定,不要這樣去設定,是沒有用的!一定要在spark-submit指令碼中去設定。有時候,如果你的spark作業處理的資料量特別特別大,幾億資料量;然後spark作業一執行,時不時的報錯,shuffle file cannot find,executor、task lost,out of memory(記憶體溢位);
可能是說executor的堆外記憶體不太夠用,導致executor在執行的過程中,可能會記憶體溢位;然後可能導致後續的stage的task在執行的時候,可能要從一些executor中去拉取shuffle map output檔案,但是executor可能已經掛掉了,關聯的block manager也沒有了;所以可能會報shuffle output file not found;resubmitting task;executor lost;spark作業徹底崩潰。
上述情況下,就可以去考慮調節一下executor的堆外記憶體。也許就可以避免報錯;此外,有時,堆外記憶體調節的比較大的時候,對於效能來說,也會帶來一定的提公升。1.2、解決方式
--conf spark.yarn.executor.memoryoverhead=2048
spark.yarn.executor.memoryoverhead(看名字,顧名思義,針對的是基於yarn的提交模式)
預設情況下,這個堆外記憶體上限大概是300多m;後來我們通常專案中,真正處理大資料的時候,這裡都會出現問題,導致spark作業反覆崩潰,無法執行;此時就會去調節這個引數,到至少1g(1024m),甚至說2g、4g
通常這個引數調節上去以後,就會避免掉某些jvm oom的異常問題,同時呢,會讓整體spark作業的效能,得到較大的提公升。
碰到一種情況,偶爾,偶爾,偶爾!!!沒有規律!!!某某file。一串file id。uuid(dsfsfd-2342vs–sdf–sdfsd)。not found。file lost。
這種情況下,很有可能是有那份資料的executor在jvm gc。所以拉取資料的時候,建立不了連線。然後超過預設60s以後,直接宣告失敗。
報錯幾次,幾次都拉取不到資料的話,可能會導致spark作業的崩潰。也可能會導致dagscheduler,反覆提交幾次stage。taskscheduler,反覆提交幾次task。大大延長我們的spark作業的執行時間。
可以考慮調節連線的超時時長。
--conf spark.core.connection.ack.wait.timeout=300
(spark core,connection,連線,ack,wait timeout,建立不上連線的時候,超時等待時長)調節這個值比較大以後,通常來說,可以避免部分的偶爾出現的某某檔案拉取失敗,某某檔案lost掉了。。。
調節executor堆外記憶體與連線等待時長教程
注意下面需要配置兩個引數 spark submit指令碼裡面,去用 conf的方式,去新增配置 一定要注意!切記,不是在你的spark作業 中,用new sparkconf set 這種方式去設定,不要這樣去設定,是沒有用的!一定要在spark submit指令碼中去設定。有時候,如果你的spark...
Elasticsearch 是如何使用堆記憶體的
es的heap記憶體基本上被segment memory filter cache field data cache bulk queue indexing buffer cluster state buffer 各類聚合查詢的結果集fetch所消耗掉,具體情況如下 一 segment memory...
如何解決電動調節閥內漏
如何解決電動調節閥內漏 現今電動調節在各種工業控制系統中得到廣發的應用,這時我們難免會碰到一些問題,其中乙個問題就是閥門內漏問題。今天主要會大家介紹電動調節閥的常見內漏的原因及解決方法,讓各位現場維護人員能夠得到一點受益!1.介質的沖刷 電動調節閥老化引起的內漏 電動調節閥調整好後經過一定時間的執行...