spark streaming调优

spark streaming、kafka 内存调优、分区调优 spark Streaming 限速 spark.streaming.kafka.maxRatePerPartition 而在Direct Approach,则是通过参数 spark.streaming.kafka.maxRatePerPartition 来配置的。这里需要注意的是,这里是对每个Partition进行限速。所以你需要事先知道Kafka有多少个分区,才好评估系统的实际吞吐量,从而... 阅读详情

防止流量激增,导致程序过载

关于流量激增,可以通过设置Spark Streaming Backpressure。
反压机制(back-pressure),通过动态控制数据接收速率来适配集群数据处理能力。属性“spark.streaming.backpressure.enabled”来控制是否启用backpressure机制,默认值false,即不启用。

 sparkConf.set("spark.streaming.backpressure.enabled",”true”)

关于反压的具体讲解,请移步:Spark Streaming Backpressure分析

除了动态控制数据接收速率来适配集群数据处理能力,还可以通过设置spark.streaming.kafka.maxRatePerPartition参数来限制每次作业中每个 Kafka 分区最多读取的记录条数。这种方法虽然可以通过限制接收速率,来适配当前的处理能力。

 sparkConf.set("spark.streaming.kafka.maxRatePerPartition",10)

每批次最大处理的数据量= spark.streaming.kafka.maxRatePerPartition的值 * kafka partition的数量* 批处理间隔时间(单位:秒)
例:10分钟的吞吐量控制在1000,0000,kafka分区是10个。
spark.streaming.kafka.maxRatePerPartition=1680

通常spark.streaming.kafka.maxRatePerPartition和spark.streaming.backpressure.enabled是一起使用的,通过spark.streaming.kafka.maxRatePerPartition控制流处理启动时,处理的第一批数据,然后 反压 控制后续的处理的数据量。

对被操作频繁的RDD进行持久化

对rdd的操作原则,就是一个字 ‘少’

  1. 避免创建重复的RDD
  2. 尽可能复用同一个RDD
  3. 对被操作频繁的RDD进行持久化

上述第一点,第二点是写代码时候要注意的选项,而关于第三点的持久化建议是使用

 rdd.cache()

cache()是spark的源码定义是 MEMORY_ONLY,而在生产环境,面对意外时,内存可能不足以执行cache()操作,所以在这里建议使用MEMORY_AND_DISK_SER,通过序列化节省空间,缺点是性能的开销。

 rdd.persist(StorageLevel.MEMORY_AND_DISK_SER)
持久化级别含义解释
MEMORY_ONLY使用未序列化的Java对象格式,将数据保存在内存中。如果内存不够存放所有的数据,则数据可能就不会进行持久化。那么下次对这个RDD执行算子操作时,那些没有被持久化的数据,需要从源头处重新计算一遍。这是默认的持久化策略,使用cache()方法时,实际就是使用的这种持久化策略。
MEMORY_AND_DISK使用未序列化的Java对象格式,优先尝试将数据保存在内存中。如果内存不够存放所有的数据,会将数据写入磁盘文件中,下次对这个RDD执行算子时,持久化在磁盘文件中的数据会被读取出来使用
MEMORY_ONLY_SER基本含义同MEMORY_ONLY。唯一的区别是,会将RDD中的数据进行序列化,RDD的每个partition会被序列化成一个字节数组。这种方式更加节省内存,从而可以避免持久化的数据占用过多内存导致频繁GC。
MEMORY_AND_DISK_SER基本含义同MEMORY_AND_DISK。唯一的区别是,会将RDD中的数据进行序列化,RDD的每个partition会被序列化成一个字节数组。这种方式更加节省内存,从而可以避免持久化的数据占用过多内存导致频繁GC。
MEMORY_ONLY_2,MEMORY_AND_DISK_2,对于上述任意一种持久化策略,如果加上后缀_2,代表的是将每个持久化的数据,都复制一份副本,并将副本保存到其他节点上。这种基于副本的持久化机制主要用于进行容错。假如某个节点挂掉,节点的内存或磁盘中的持久化数据丢失了,那么后续对RDD计算时还可以使用该数据在其他节点上的副本。如果没有副本的话,就只能将这些数据从源头处重新计算一遍了。

关于持久化级别,通常不建议使用DISK_ONLY和后缀为_2的级别:因为完全基于磁盘文件进行数据的读写,会导致性能急剧降低,有时还不如重新计算一次所有RDD。后缀为_2的级别,必须将所有数据都复制一份副本,并发送到其他节点上,数据复制以及网络传输会导致较大的性能开销,除非是要求作业的高可用性,否则不建议使用。

使用map-side预聚合的shuffle操作

如果因为业务需要,一定要使用shuffle操作,无法用map类的算子来替代,那么尽量使用可以map-side预聚合的算子。
所谓的map-side预聚合,说的是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的key都被聚合起来了。其他节点在拉取所有节点上的相同key时,就会大大减少需要拉取的数据数量,从而也就减少了磁盘IO以及网络传输开销。通常来说,在可能的情况下,建议使用reduceByKey或者aggregateByKey算子来替代掉groupByKey算子。因为reduceByKey和aggregateByKey算子都会使用用户自定义的函数对每个节点本地的相同key进行预聚合。而groupByKey算子是不会进行预聚合的,全量的数据会在集群的各个节点之间分发和传输,性能相对来说比较差。

Spark Streaming 性能调优 目录 1、合理的批次处理时间 2、合理的kafka拉取数据 3、缓存反复使用的Dstream(RDD) 4、其他一些优化策略 5、结果 1、合理的批次处理时间 关于Spark Streaming的批处理时间设置是非常重要的,Spark Streaming在不断接收数据的同时,需要处理数据的时间,所以如果设置过段的批处理时间,会造成数据堆积,即未完成的batch数据越来越多,从而发生阻塞。 另外值... 阅读详情

相关推荐

【Spark 实战系列】sparkstreaming 任务出现堆积如何优化?(流量突然大增资源不够怎么办?)

在日常的生产中,什么情况下会出现数据堆积呢?

JasonLee实时计算 1326

Spark Streaming Backpressure反压机制

Spark Streaming Backpressure分析 为什么引入Backpressure 默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > batch interval的情况,其中batch processing time 为实际计算一个批次花费时间, batch interval为Streaming应用设置的批处理间隔。这意味着Spark Streaming的数据接收速率高于.

yang灬仔 713

Spark Streaming 调优技巧分享

作者:禅与计算机程序设计艺术 1.简介 概述 Apache Spark Streaming 是 Apache Spark 提供的一套实时流处理框架,通过高效、可靠地快速计算大数据量上的数据变化并生成结果,能够满足大多数应用场景的需求。Spark Streaming 在数

AI天才研究院 2203

SparkStreaming的backpressure的使用

之前在使用spark streaming消费kafka数据时,为了防止每次从kafka获取的数据过多,设置了spark.streaming.kafka.maxRatePerPartition的大小,这样每次从kafka获取到的最大数据就可以为“topic个数*kafka每个topic分区个数*maxRatePerPartition”。这样似乎可以防止spark一次性读入的数据太多。然鹅,带来了一些...

weixin_36585549的博客 760

从ViT到CLIP:OpenAI如何用4亿张图‘教会’AI看懂世界?一次讲透对比学习与Prompt工程

本文深入解析OpenAI的CLIP模型如何通过4亿图文对的对比学习实现跨模态理解,详细探讨了对比学习、数据构建、模型架构及Prompt工程等核心技术。CLIP利用Transformer架构和精心设计的Prompt模板,在Zero-Shot分类、图像检索等场景展现出强大能力,为多模态AI应用开辟新方向。

weixin_27027459的博客 372

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 979

Spark Streaming Backpressure分析

1、为什么引入Backpressure 默认情况下,Spark Streaming通过Receiver以生产者生产数据的速率接收数据,计算过程中会出现batch processing time > batch interval的情况,其中batch processing time 为实际计算一个批次花费时间, batch interval为Stream...

weixin_30289831的博客 312

华为2288H-V5服务器做raid的详细步骤

操作步骤 服务器启动界面 按del键进入设置输入密码,2288H-v5默认密码是Admin@9000 移动光标选择device manager 驱动管理选择configurationutility 配置管理 选择main menu 主菜单 选择第一个 configuration management 配置管理 选择create virtual driver 创建虚拟驱动选择select RAID level 选择RAID等级选择level-5 选择select drivers 选择驱......

weixin_46041124的博客 1万+

Spark Streaming的背压机制的原理与实现代码及分析

Spark Streaming的背压机制是一种根据JobScheduler反馈的作业执行信息来动态调整Receiver数据接收率的机制。在Spark 1.5.0及以上版本中,可以通过设置spark.streaming.backpressure.enabled为true来启用背压机制。当启用背压机制时,Spark Streaming会自动根据系统的处理能力来调整数据的输入速率,从而在流量高峰时保证最大的吞吐量和性能。背压机制中涉及的关键组件包括RateController和RateEstimator。

weixin_30777913的博客 1586

Buck电路中自举电容串联小电阻的作用

在Buck电路中,自举电容(Cboot)驱动高边MOSFET时,因寄生电感和电容会形成LC谐振回路,导致SW节点高频振铃,引发EMI问题。串联小电阻(Rboot)可引入阻尼效应,抑制振铃、改善波形和EMI性能,但会略微增加开关损耗。设计时建议预留可调电阻位(2Ω~20Ω),根据实测结果平衡效率与系统稳定性,提升电源可靠性。这一措施是优化开关电源EMC的常见实践。

硬核科技 627

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

Spark Streaming性能调优

一、 数据接收并行度调优 1、通过网络接收数据时(比如Kafka、Flume),会将数据反序列化,并存储在Spark的内存中。如果数据接收称为系统的瓶颈,那么可以考虑并行化数据接收。每一个输入DStream都会在某个Worker的Executor上启动一个Receiver,该Receiver接收一个数据流。因此可以通过创建多个输入DStream,并且配置它们接收数据源不同的分区数据,达到接收多个...

JacksonKing的专栏 409

手把手教你逆向抖店滑块验证码:从抓包到生成captchaBody的完整流程(附Python复现代码)

本文详细解析了抖店滑块验证码的逆向过程,从抓包分析到参数生成,最终用Python完整复现验证流程。涵盖关键接口分析、指纹参数生成、轨迹加密逻辑及核心加密算法实现,帮助开发者突破抖店的多重安全机制,实现高效的人机验证绕过。

weixin_30681121的博客 425

Spark Streaming调优

操作场景 SparkStreaming作为一种mini-batch方式的流式处理框架,它主要的特点是:秒级时延和高吞吐量。因此SparkStreaming调优的目标:在秒级延迟的情景下,提高SparkStreaming的吞吐能力,在单位时间处理尽可能多的数据。 说明: 本章节适用于输入数据源为Kafka的使用场景。 操作步骤 一个简单的流处理系统由以下三部分组件组成:数据源 + ...

蘑菇丁的专栏 487

连续相位调制通信调制方法的载波同步和定时同步研究及MATLAB仿真

本文将探讨CPM调制方法中的载波同步和定时同步问题,并提供MATLAB仿真源代码。本文讨论了连续相位调制通信中的载波同步和定时同步问题,并提供了相应的MATLAB仿真源代码。通过适当的载波同步和定时同步方法,可以实现对CPM信号的准确解调。希望本文对您理解连续相位调制通信调制方法的载波同步和定时同步问题有所帮助,同时也为您提供了一些MATLAB仿真实现的思路和示例代码。在CPM系统中,载波同步的主要任务是估计接收信号的载波频率偏移和相位偏移。在CPM系统中,常用的定时同步方法是基于自相关函数的峰值检测。

2301_79331230的博客 692

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

spark streaming参数调优

应用spark streaming的时候,可以在spark UI页面监控spark streaming的运行,UI页面有一个Streaming选项卡,展示如下: 里面有四个选项,分别是input rate,,scheduling delay,processing time和total delay,其中input rate下有一个该应用所使用的输入流的方法,这里是使用的kafkaUtil的dire...

littlely_ll的博客 2206

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spark Streaming之内存调优

一.内存调优 Spark Streaming应用程序所需的集群内存大小在很大程度上取决于所使用的转换类型。例如,如果要对最后10分钟的数据使用窗口操作,则集群应具有足够的内存以将10分钟的数据保存在内存中。或者,如果想使用updateStateByKey操作大量的kv类型数据,则所需的存储空间会很大。相反,如果想执行一个简单的map-filter-store操作,则所需的内存将很少。 通常,由于通过接收器接收的数据存储在StorageLevel.MEMORY_AND_DISK_SER_2中,因此无法容纳在内

踏雪无痕 920

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

spark 参数调优11-Spark Streaming

spark参数调优系列 目录地址: https://blog.csdn.net/zyzzxycj/article/details/81011540   11 Spark Streaming spark.streaming.backpressure.enabled 反压,默认false,详细了解请移步https://blog.csdn.net/zyzzxycj/article/detai...

Deegue 7982

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

103、Spark Streaming之性能调优

数据接收并行度调优 通过网络接收数据时(比如Kafka、Flume),会将数据反序列化,并存储在Spark的内存中。如果数据接收称为系统的瓶颈,那么可以考虑并行化数据接收。每一个输入DStream都会在某个Worker的Executor上启动一个Receiver,该Receiver接收一个数据流。因此可以通过创建多个输入DStream,并且配置它们接收数据源不同的分区数据,达到接收多个数据流的效...

ZJ__ZFH的博客 1320

Spark Structrued Streaming 及 DStreaming 调优笔记

背景 项目中用的是Spark Structrued Streaming ,也就是Spark 2.0的新版Streaming,看官方文档也说过性能及实时性会比之前的Dstreaming好点,但是相关的资料相比Dstreaming实在是少很多,现在调优阶段很多都要参考Dstreaming的文章以及经验。 这里整理一个Structured Streaming和DStreaming通用的不同方向、思路的调...

小鹅鹅的博客 2323

Spark Streaming官方文档翻译Spark Streaming性能调优

性能调优(Performance Tuning) 要在集群上的Spark Streaming应用程序中获得最佳性能,需要进行一些调整。这些已在调优指南中详细讨论。本节重点介绍一些最重要的内容。 数据接收的并行度(Level of Parallelism in Data Receiving) 通过网络接收数据(如Kafka、Flume、socket等)需要将数据反序列化并存储在Spark中。如果数据...

qq_39315954的博客 438
上一篇: python连接redis哨兵集群
下一篇: EC2-chapter-5
TruthK
博客等级 码龄9年 33粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值