Spark处理数据出现大量GC导致处理性能变慢的原因及解决方案

Spark应用程序处理的大数据多是运行于JVM上的,经常要面对GC优化问题。下面给出由于Linux系统原因导致的GC耗时异常的处理方式:

打开Spark的GC日志,在spark-env.sh文件中的SPARK_JAVA_OPTS参数上添加 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

如果每次GC回收的量基本相同,但是在某一时间点,耗时异常大,这种情况下,有两种可能:

1、GC收集对象所在内存被swap了

2、GC线程进入IO等待状态,因为系统IO繁忙

这两种情况可以由GC日志的/user/sys/real的值得pattern来识别,如果为Low user time,high system time,long GC pause说明数据内存被swap了,如果是Low user time,low system time,long GC pause说明GC线程进入IO等待状态。

处理方式:

对于情况1,确保JVM内存不被swap,可以启动参数-XX:+AlwaysPreTouch执行sysctl -w vm.swappiness=0 禁用swap

对于情况2,均匀系统IO负载,可以通过执行

sysctl -w vm.dirty_writeback_cenisecs=500

sysctl -w vm.dirty_expire_centisecs=500来实现

时间: 2024-10-19 05:41:39

Spark处理数据出现大量GC导致处理性能变慢的原因及解决方案的相关文章

oracle浅析导致数据库性能问题的常见原因

㈠ 不合理的大表全表扫描 详见:点击打开链接 v$session_longops视图记录了超过6秒的所有SQL语句        这其中绝大部是全表扫描的语句! ㈡ 语句共享性不好 常出没在OLTP,由于app没有合理使用绑定变量,导致大量重复的语句Parse,浪费大量的shared pool,使CPU利用率居高不下 ㈢ 过量的排序操作 有个原则:能不排序就不排序        特别是multi-pass,与事务设计.缺乏索引.优化器的选择等均有关系 ㈣ 大量递归SQL语句 由sys执行,以大量

linux crontab -r 导致no crontab for root的原因及解决方案

使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[user]-列出用户目前的crontab. crontab-e[user]-编辑用户目前的crontab. crontab-d[user]-删除用户目前的crontab. crontab-c dir- 指定crontab的目录. crontab文件的格式:M H D m d cmd. crontab -r

Spark 读写数据、抽象转换 拾遗

读 package com.test.spark import org.apache.spark.sql.{Dataset, Row, SaveMode, SparkSession} /** * @author Administrator * 2019/7/22-17:09 * */ object TestReadData { val spark = SparkSession .builder() .appName("TestCreateDataset") .config("

地铁译:Spark for python developers ---Spark的数据戏法

聚焦在 Twitter 上关于Apache Spark的数据, 这些是准备用于机器学习和流式处理应用的数据. 重点是如何通过分布式网络交换代码和数据,获得 串行化, 持久化 , 调度和缓存的实战经验 . 认真使用 Spark SQL, 交互性探索结构化和半结构化数据. Spark SQL 的基础数据结构是?Spark dataframe, Spark dataframe 受到了 Python Pandas?dataframe 和R dataframe 的启发. 这是一个强大的数据结构, 有R 或

一次显式GC导致的High CPU问题处理过程

项目现场反馈系统出现性能问题,具体表现为:所有的客户端响应极其卡顿. 第一反应推测,难道是DB层面出现阻塞?检查v$session会话状态及等待类型未见异常,应该可以排除DB层面原因导致的可能. 继续检查,难道是应用服务器层面出现资源瓶颈?检查任务管理器,w3wp.exe进程占用在10%-20%之间,整体占用也在30%以下(项目现场服务器环境为某通运营商云服务器,此处有坑),内存占用不到4G,w3wp.exe只占了1G多点,服务器的内存好像是48G这个应该也不是瓶颈.继续...难道是网络?显然不

教你如何成为Spark大数据高手?

教你如何成为Spark大数据高手? Spark目前被越来越多的企业使用,和Hadoop一样,Spark也是以作业的形式向集群提交任务,那么如何成为Spark大数据高手?下面就来个深度教程. Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式,是罕见的全能选手.Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理.图技术.机器学习.NoSQL查询等方面的所有核心

Spark 大数据中文分词统计(三) Scala语言实现分词统计

Java版的Spark大数据中文分词统计程序完成之后,又经过一周的努力,把Scala版的Spark 大数据中文分词统计程序也搞出来了,在此分享给各位想学习Spark的朋友. 如下是程序最终运行的界面截图,和Java版差别不大: 如下是Scala工程结构: 当你在工程主类文件WordCounter.scala上单击右键,选择Run As Scala Application: 然后选择唐诗宋词进行分词统计,就会出现前面显示的分词结果. 工程代码已经上传CSDN:http://download.csd

Azure HDInsight 和 Spark 大数据实战(二)

HDInsight cluster on Linux 登录 Azure portal (https://manage.windowsazure.com ) 点击左下角的 NEW 按钮,然后点击 DATA SERVICES 按钮,点击 HDINSIGHT,选择 HADOOP ON LINUX,如下图所示. 输入集群名称,选择集群大小和账号,设定集群的密码和存储账号,下表是各个参数的含义和配置说明. Name Value Cluster Name Name of the cluster. Clust

引爆Spark大数据引擎的七大工具

原文名称:7 tools to fire up Spark's big data engine Spark正在数据处理领域卷起一场风暴.让我们通过本篇文章,看看为Spark的大数据平台起到推波助澜的几个重要工具. Spark生态系统众生相 Apache Spark不仅仅让大数据处理起来更快,还让大数据处理起来更简单.功能更强大.更方便.Spark并非只是一项技术,它结合了诸多部分,新的功能和性能改进不断添加进来,每个部分都在不断完善之中. 本文介绍了Spark生态系统的每个主要部分:每个部分的功