spark性能調優02-JVM調優


1、降低cache操作的內存占比

  1.1 為什么要降低cache操作的內存占比

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

    默認情況下,供Rdd緩存使用的占0.6,但是,有些時候,不需要那么多的緩存,反而函數計算需要更多的內存,這樣導致頻繁的minor gc和full gc,導致性能降低。

  1.2 如何調節

    根據spark作業的yarn界面,如果有頻繁的gc,就需要調節 

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

2、調節executor的堆外內存

  2.1 什么情況下進行調節

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

  2.2 如何調節

    在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、調節連接等待時間

  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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM