spark中local模式与cluster模式使用场景_不可不知的Spark调优点

不可不知的Spark调优点​mp.weixin.qq.com
v2-518836ce2c34c8d73c6c20ba7222865a_180x120.jpg

在利用Spark处理数据时,如果数据量不大,那么Spark的默认配置基本就能满足实际的业务场景。但是当数据量大的时候,就需要做一定的参数配置调整和优化,以保证业务的安全、稳定的运行。并且在实际优化中,要考虑不同的场景,采取不同的优化策略。

1.合理设置微批处理时间

在SparkSreaming流式处理中,合理的设置微批处理时间(batchDuration)是非常有必要的。

如果batchDuration设置过短,会导致SparkStreaming频繁提交job。如果每个batchDuration所产生的job不能在这个时间内完成处理,就会造成job不断堆积,最终导致SparkStreaming发生阻塞,甚至程序宕掉。

需要根据不同的应用场景和硬件配置等确定,可以根据SparkStreaming的可视化监控界面,观察Total Delay等指标来进行batchDuration的调整。

2.控制消费的最大速率

比如SparkStreaming和Kafka集成,采用direct模式时,需要设置参数spark.streaming.kafka.maxRatePerPartition以控制每个Kafka分区最大消费数。该参数默认没有上线,即Kafka当中有多少数据它就会直接全部拉出。

但在实际使用中,需要根据生产者写入Kafka的速率以及消费者本身处理数据的速度综合考虑。

同时还需要结合上面的batchDuration,使得每个partition拉取的数据,要在每个batchDuration期间顺利处理完毕,做到尽可能高的吞吐量,该参数的调整需参考可视化监控界面中的Input Rate和Processing Time。

3.缓存反复使用的"数据集

"Spark中的RDD和SparkStreaming中的DStream,如果被反复的使用,最好利用cache或者persist算子,将"数据集"缓存起来,防止过度的调度资源造成的不必要的开销。

4.合理的设置GC

JVM垃圾回收是非常消耗性能和时间的,尤其是stop world、full gc非常影响程序的正常运行。

关于JVM和参数配置,建议研读《JVM内存管理和垃圾回收》、《JVM垃圾回收器、内存分配与回收策略》、《内存泄漏、内存溢出和堆外内存,JVM优化配置参数》。

5.合理设置CPU

每个executor可以占用一个或多个core,可以通过观察CPU的使用率变化来了解计算资源的使用情况。

要避免CPU的使用浪费,比如一个executor占用多个core,但是总的CPU利用率却不高。此时建议让每个executor占用相对之前较少的core,同时worker下面增加更多的executor进程来增加并行执行的executor数量,从而提高CPU利用率。同时要考虑内存消耗,毕竟一台机器运行的executor越多,每个executor的内存就越小,容易产生OOM。

6.使用Kryo进行序列化和反序列化

Spark默认使用Java的序列化机制,但这种Java原生的序列化机制性能却比Kryo差很多。

使用Kryo需要进行设置:

//设置序列化器为KryoSerializerSparkConf.set("spark.serializer","org.apache.spark.serializer.KryoSerializer")

//注册要序列化的自定义类型SparkConf.registerKryoClasses(Array(classOf[CustomClass1],classOf[CustomClass2]))

7.使用高性能的算子

1)使用reduceByKey、aggregateByKey替代groupByKey

2)filter之后进行coalesce操作

3)使用repartitionAndSortWithinPartition

替代repartition与sort操作

4)使用mapPartition替代map

5)使用foreachPartition替代foreach

要结合实际使用场景,进行算子的替代优化。

除了上述常用调优策略,还有合理设置Spark并行度,比如参数spark.default.parallelism的设置等,所有这些都要求对Spark内核原理有深入理解,这里不再一一阐述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令逐行显示_Linux命令和Shell脚本学习随笔3

一、处理目录创建目录:mkdir Test创建多级目录: mkdir -p Test1/testsub删除目录:rmdir 该命令只允许删除空目录,删除非空命令提示:Directory not empty,如果文件夹下有文件可以配合命令rm进行删除二、查看文件内容命令…

【图解分布式架构】看不懂直接面壁

戳蓝字“CSDN云计算”关注我们哦!作者 | 佚名责编 | 阿秃初始阶段架构初始阶段的小型系统、应用程序、数据库、文件等所有的资源都在一台服务器上。通俗称为LAMP。特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器…

RabbitMQ的5种队列_Work模式_入门试炼_第5篇

文章目录一、work模式1.1. 图示1.2. 消费者11.3. 消费者21.4. 生产者1.5. 测试二、Work模式的“能者多劳”2.1. 关键配置2.2. 测试:一、work模式 1.1. 图示 一个生产者、2个消费者。 一个消息只能被一个消费者获取。 1.2. 消费者1 package com.gblfy.rabbitmq.w…

阿里云云数据库RDS秒级监控功能解锁,通宵加班找故障将成为过去式

摘要: 每一个奋斗在前线的数据库管理员和运维人员似乎运气都不太好,这些人都绝对经历过的诡异事件就是:逢年过节必出故障,明明眼看着要休假了,又接到故障通知,只好通宵加班找问题。没问题的时候可能大家都不…

阿里云DDoS高防 - 访问与攻击日志实时分析(三)

摘要: 本文介绍了DDoS日志分析功能的日志报表的使用方法。概述本文介绍DDoS日志分析功能的日志报表的使用方法。前提配置刚进入DDoS高防控制台的全量日志下,在界面引导下开通日志服务并授权操作后。就可以给特定的网站启用日志分析功能了。报表界面介绍在…

vue获取输入框得内容_React入坑(四):获取输入框内的内容

方法一:通过event对象信息获取import React from react;class Show extends React.Component {//state 相当于是Vue里面的data state {text: "",//默认初始值 }; hanChange ev > {//onChange 为Change事件,ev是传递的参数 …

学计算机的用surface,11个高效利用Surface处理工作学习任务的方法 - Surface 使用教程...

在 Surface 上捕获屏幕截图同时按下“电源”按钮 “调高音量”按钮来捕获全屏幕的截图,然后即可将其粘贴到文档、电子邮件或应用中。 屏幕截图同时也会保存在“屏幕截图”文件夹中。在网页上做笔记在 Microsoft Edge 中,选择“设置及更多” >“更多工…

RabbitMQ的5种队列_消息确认模式_入门试炼_第6篇

消费者从队列中获取消息,服务端如何知道消息已经被消费呢? 模式1:自动确认 只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。 模式2:手动确认 消费者从队列中获取消息…

5分钟了解什么是真正的深度学习

人工智能(AI)和机器学习(ML)在当下的火热程度我就不多说了,但是真正懂这方面的人又有多少呢?本文将带你了解人工智能和机器学习的基本知识。同时,你也会了解到机器学习中最火的方法——深度学习…

柱状图中xy轴怎么出现_如果制砂机设备在工作中出现堵料现象该怎么办?

制砂机设备作为砂石生产线中常用的设备,在整条生产线中起着举足轻重的作用,为我国的基础建设的发展提供了巨大的贡献。但是不管技术工艺如何不断的改革完善,在制砂机设备工作中还是会出现堵料的现象。当出现这种情况我们应该怎么办呢?下面我…

阿里云DDoS高防 - 访问与攻击日志实时分析(四)

摘要: 本文介绍了DDoS日志实时分析功能的费用计量细节与案例。概述本文介绍了DDoS日志的费用计量细节与案例。费用概述DDoS日志分析与报表功能依赖日志服务提供日志数据的实时查询与分析功能。当您开通DDoS访问与攻击日志实时分析功能时, 需要您根据界面提示开通日志…

c++检测输入是否为数字_Go64 for Mac(检测应用是否为64位)

“一种快速的方法来全面了解您的64位应用程序兼容性,并在安装macOS Catalina之前避免意外。”Go64 可以帮你检测出你的应用是否 64 位,以及软件版本号,开发商以及官网,甚至可以为你计算出软件升级所需要花费的金额。应用介绍从 ma…

阿里云DDoS高防 - 访问与攻击日志实时分析(二)

摘要: 本文介绍了如何配置DDoS日志分析功能,结合实际场景详细介绍了如何使用日志对DDoS访问与攻击日志进行分析与图形化操作。概述本文介绍了如何配置DDoS日志分析功能,结合实际场景详细介绍了如何使用日志对DDoS访问与攻击日志进行分析与图形…

【面试妥了】史上最全Spark面试题

戳蓝字“CSDN云计算”关注我们哦!作者 | 游骑小兵责编 | 阿秃Spark问题精华Q:什么是Spark?A:简单理解,Spark是在Hadoop基础上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架…

RabbitMQ的5种队列_订阅模式_入门试炼_第7篇

解读: 1、1个生产者,多个消费者 2、每一个消费者都有自己的一个队列 3、生产者没有将消息直接发送到队列,而是发送到了交换机 4、每个队列都要绑定到交换机 5、生产者发送的消息,经过交换机,到达队列,实现&…

python定期自动运行_干货分享 | 适合 Python 入门的 8 款强大工具,不会就你还不知道吧!...

点击上方“人工智能Corner”,“星标或置顶公众号”干货分享,第一时间送达Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小…

图解 Python 算法

普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有…

阿里技术人的第一节课

摘要: 本期的分享我们邀请到了阿里巴巴研发效能事业部的董越老师,他是阿里巴巴内部培训百年技术课堂的著名讲师,他讲的《百技课程-代码服务》是每一位入职技术童鞋必修的一门课,我们也将这种阿里内训技术首次面向业界公开&#xf…

RabbitMQ的5种队列_路由模式_入门试炼_第8篇

生产者 5.8.3.费者1(前台系统) 消费2(搜索系统)

ios安装python的步骤_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)

点击上方“AirPython”,选择“加为星标”第一时间关注 Python 技术干货!1. 场景经常有小伙伴在交流群问我,每天的早报新闻是怎么获取的?其实,早期使用的方案,是利用爬虫获取到一些新闻网站的标题&#xff0…