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)

相关文章
相关标签/搜索