spark性能調優02-JVM調優

一、下降cache操做的內存佔比緩存

  1.1 爲何要下降cache操做的內存佔比函數

    spark的堆內存分別兩部分,一部分用來給Rdd的緩存進行使用,另外一部分供spark算子函數運行使用,存放函數中的對象性能

    默認狀況下,供Rdd緩存使用的佔0.6,可是,有些時候,不須要那麼多的緩存,反而函數計算須要更多的內存,這樣致使頻繁的minor gc和full gc,致使性能下降。ui

  1.2 如何調節spa

    根據spark做業的yarn界面,若是有頻繁的gc,就須要調節 code

//調節cache操做的內存佔比
conf.set("spark.storage.memoryFraction", "0.4");

二、調節executor的堆外內存對象

  2.1 什麼狀況下進行調節blog

    當spark做業中,是否是的報錯,shuffle file cannot find,executro、task lost,out of memory等,多是堆外內存不足,致使executor掛掉,task拉取該executor的數據是沒法獲取到,致使以上錯誤,甚至spark做業崩潰。內存

  2.2 如何調節it

    在spark做業的提交腳本中,修改spark.yarn.executor.memoryOverhead參數(默認爲300多M)

/usr/local/spark/bin/spark-submit \
--class com.ibeifeng.sparkstudy.WordCount \
--num-executors 80 \
--driver-memory 6g \
--executor-memory 6g \
--executor-cores 3 \
--master yarn-cluster \
--queue root.default \
--conf spark.yarn.executor.memoryOverhead=2048 \        調節堆外內存 --conf spark.core.connection.ack.wait.timeout=300 \       調節鏈接時間 /usr/local/spark/spark.jar 

三、調節鏈接等待時間

  3.1 什麼狀況下須要調節

    當一個executor的blockManager須要從其餘的executor的blockManager中拉取數據,可是目標executor正處在gc階段,此時源executor會進入等待鏈接狀態(默認60s),若是屢次拉取失敗則會報   一串filed id  uuid(dsfsss-12323-sdsdsd-wewe) not found ,file lost,甚至spark做用直接崩潰。

  3.2 如何調節

    在spark做業的提交腳本中,修改conf spark.core.connection.ack.wait.timeout參數(默認爲60s)

相關文章
相關標籤/搜索