不可不知的Spark调优点

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

在利用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需要进行设置:

//设置序列化器为KryoSerializer
SparkConf.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内核原理有深入理解,这里不再一一阐述。


本文转载自公众号: 大数据学习与分享
原文链接:https://mp.weixin.qq.com/s?__biz=MzI0Mjc0MDU2NQ==&mid=2247484099&idx=1&sn=5755c366d08e82886bf0c6af9d6cf6cb&chksm=e976fef9de0177ef1e6d4dad6aa0ab6363e54b316c64f51aef3ac1ba4a5c6d4336d8c2b6ddc4&scene=21#wechat_redirect


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区近万人Spark技术同学在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!

image.png

对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
image.png

Apache Spark技术交流社区公众号,微信扫一扫关注

image.png

相关文章
|
安全 Linux 数据处理
对android下的ptrace详细分析
解析ptrace函数的功能
1051 0
|
5月前
|
存储 运维 安全
《OpenClaw端口通信失效全解:监听修改与防火墙规则落地指南》
本文针对OpenClaw启动后默认端口无法访问、系统提示连接被拒绝的高频运维问题,结合真实落地实操经验展开全流程解析。文章从端口占用进程深度溯源入手,区分不同占用主体的处理方式,再详细讲解配置文件中监听端口的规范修改与安全备份方法,同时涵盖框架平滑重启、端口绑定状态核验、防火墙策略添加与规则重载等核心步骤,最终通过多场景连通性测试完成问题闭环。全文摒弃零散操作,侧重环境动态适配与底层逻辑梳理,帮助从业者建立系统化端口运维思维,从根源解决端口冲突、策略拦截等故障,实现框架长期稳定对外提供服务。
478 10
|
2月前
|
前端开发 JavaScript Serverless
阿里云宜搭对接使用完全指南:六大集成路径深度解析
本文系统性地阐述了阿里云宜搭低代码开发平台与外部系统对接的六大技术路径与实践方案。文章从宜搭的架构特性出发,深入讲解了连接器机制、远程API调用、数据源配置、服务回调、OpenAPI开放接口以及FaaS函数计算集成等核心对接方式。通过详细的配置步骤、丰富的代码示例(涵盖Java、Python、JavaScript、Node.js等语言)和真实业务场景的剖析,帮助开发者全面掌握宜搭的集成能力。文章还涵盖了鉴权配置、跨域处理、性能优化、安全管控等高级话题,并提供了常见问题的解决方案。无论是简单的数据查询同步,还是复杂的业务流程编排,读者都能从中找到适合的对接策略与实施方法。
|
2月前
|
存储 人工智能 编解码
AI短剧/AI广告生成实战流程:阿里云百炼新上线的HappyHorse 1.1功能详解、参数调试、成本指南
HappyHorse是阿里云推出的端到端AI视频生成大模型,2026年6月22日正式上线迭代版本HappyHorse 1.1,部署在阿里云百炼平台对外开放API调用与在线调试能力,主打短剧、电商广告、品牌宣传片、内容营销短片四大商用内容场景。相比初代HappyHorse 1.0,新版本在动态时序、角色一致性、画面质感、音画协同、长指令理解五大核心维度完成系统性升级,解决旧版动作僵硬、人物面部失真、多角色画面互相污染、长分镜逻辑断裂等行业常见痛点。
595 2
|
2月前
|
人工智能 自然语言处理 监控
阿里云百炼大模型服务平台如何部署模型?具体流程与模型计费方式和收费标准参考
本文系统介绍了阿里云百炼平台大模型从调优到部署上线的流程。首先需完成数据准备与模型调优,生成自定义模型并获取API Key;随后在模型部署控制台选择模型与计费方式(后付费/预付费),配置推理模式、上下文长度等参数,等待服务状态变为"运行中"即部署成功。平台提供预置吞吐、模型单元、Token用量三种计费模式,分别适用于高并发生产场景、资源隔离需求及效果验证场景,支持按量与包月付费。部署后可通过OpenAI兼容API、Dify、Chatbox等多种方式调用,也可借助Gradio搭建本地Web UI,满足多样化应用需求。
|
2月前
|
人工智能 搜索推荐 API
Hermes Agent的部署以及API集成教程
Hermes Agent 是 Nous Research 推出的开源自我进化型AI智能体,支持持久记忆、技能自动沉淀与多工具集成;需通过 WSL2 在 Windows 部署,兼容 OpenAI 标准 API。
388 2
|
2月前
|
SQL 人工智能 中间件
GraphRAG + Multi-Agent 凭什么登上 Nature?
2026年5月《Nature Scientific Reports》刊发突破性论文:首创GraphRAG+Multi-Agent+多模态融合的五层统一平台,将Multi-hop QA准确率提升46%,实现真实业务落地(ATS/Text-to-SQL/Research Assistant),工程可复现、架构可复用。(239字)
336 0
|
5月前
|
SQL 运维 容灾
别等业务中断才补坑!RTO/RPO 核心逻辑与全场景灾备架构选型全攻略
本文系统解析容灾备份核心知识:阐明其作为业务“生命线”的必要性;深度解读RTO(恢复时间目标)与RPO(恢复点目标)的定义、误区及量化方法;厘清备份(保数据)与容灾(保业务)的本质区别;详解冷备、温备、主从热备、同城双活、两地三中心六大主流架构;提供分场景选型指南与Spring Boot+MySQL实战代码,并强调演练验证与3-2-1运维法则。
1351 1
|
5月前
|
SQL 分布式计算 大数据
三朵云的大数据江湖:AWS、GCP、Azure 托管服务到底谁更香?
三朵云的大数据江湖:AWS、GCP、Azure 托管服务到底谁更香?
551 2

热门文章

最新文章