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)
spark性能调优02-JVM调优的更多相关文章
- Spark性能调优之JVM调优
Spark性能调优之JVM调优 通过一张图让你明白以下四个问题 1.JVM GC机制,堆内存的组成 2.Spark的调优为什么会和JVM的调 ...
- Spark调优之JVM调优
一.JVM调优 JVM: 老年代: 存放少量生命周期长的对象,如连接池 年轻代: Spark task执行算子函数自己创建的大量对象 JVM机制: 对象进入java虚拟机之后会放在eden区域和一个s ...
- 技能篇:linux服务性能问题排查及jvm调优思路
只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求.最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的.如果你是负责中间件或 ...
- Spark性能优化:数据倾斜调优
前言 继<Spark性能优化:开发调优篇>和<Spark性能优化:资源调优篇>讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化 ...
- 服务器的tomcat调优和jvm调化
下面讲述的是tomcat的优化,及jvm的优化 Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增 ...
- jvm调优原则
合理规划jvm性能调优 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响.但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松.为了 ...
- JVM调优参数、方法、工具以及案例总结
这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...
- 【JVM进阶之路】十:JVM调优总结
1.调优原则 JVM调优听起来很高大上,但是要认识到,JVM调优应该是Java性能优化的最后一颗子弹. 比较认可廖雪峰老师的观点,要认识到JVM调优不是常规手段,性能问题一般第一选择是优化程序,最后的 ...
- 【java虚拟机】jvm调优原则
转自:https://www.cnblogs.com/xiaopaipai/p/10522794.html 合理规划jvm性能调优 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考 ...
- SpringBoot项目优化和Jvm调优(转)
原文:https://blog.csdn.net/wd2014610/article/details/82182617 项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情. 在SpringB ...
随机推荐
- JS原型与原型链终极详解 (转载)
这篇文章需要认认真真仔仔细细的看才能看懂 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函 ...
- java中的fail-fast(快速失败)机制
java中的fail-fast(快速失败)机制 简介 fail-fast机制,即快速失败机制,是java集合中的一种错误检测机制.当在迭代集合的过程中对该集合的结构改变是,就有可能会发生fail-fa ...
- select 和 order by
select 的优先级要高于order by,相当于是select先创建了一个临时表,再通过临时表去排序.所以,对于一些sum()的汇总,在进行排序,实际是排序的select后的字段,而不是表里的那个 ...
- Spring Boot 支持 HTTPS 如此简单,So easy!
这里讲的是 Spring Boot 内嵌式 Server 打 jar 包运行的方式,打 WAR 包部署的就不存在要 Spring Boot 支持 HTTPS 了,需要去外部对应的 Server 配置. ...
- border-radius使用的一些问题(不起作用?)
出现这种问题,border-radius没有达到自己想要的效果(小程序中) 原因:border-radius定义了border的圆角,未定义span元素的圆角范围 解决:不设置border,则bord ...
- httptesting HTTP(s)接口自动化测试框架
坐标: https://github.com/HttpTesting/pyhttp # HttpTesting  VALUES( ...
- python中map的排序以及取出map中取最大最小值
map排序: 1.按key排序: items=dict.items() items.sort() sorted(dict.items(),key=lambda x:x[0],reverse=False ...