一、下降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)