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 \
--driver-memory 6g \
--executor-memory 6g \
--executor-cores \
--master yarn-cluster \
--queue root.default \
--conf spark.yarn.executor.memoryOverhead= \ 调节堆外内存
--conf spark.core.connection.ack.wait.timeout= \ 调节连接时间
/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)
最新文章
- SpringHttpInvoker解析1-使用示例
- Cas_Server端安装
- ubuntu下配置java环境【转】
- URAL1658. Sum of Digits(DP)
- 转:简单介绍 P3P 技术
- SqlServer字段说明查询(表基本信息查询)
- 《Lua游戏开发实践指南》读后感
- The Moving Points hdu4717
- 基于 HTML5 Canvas 的 3D 机房创建
- 容器化的 DevOps 工作流
- 树莓派控制高电平蜂鸣器(c语言+新手向)
- iOS开源照片浏览器框架SGPhotoBrowser的设计与实现
- jdk1.7更新visualvm插件
- UEditor调用上传图片、上传文件等模块
- Thymleaf中th:each标签遍历list如何获取index
- 快速失败/报错机制 - fail-fast
- nginx配置http访问自动跳转到https
- 首席数据官(CDO)的崛起
- eclipse 项目转as项目时 .so文件 jniLibs的设置
- DataGridView使用技巧三:不显示最下面的新行、判断新增行