sparkStreaming程序的的部署、调优
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,(1)部署部署方式:spark standalone集群、yarn集群、meoss集群...driver的HA:如果希望driver程序在失败之后自动重启,那么需要在程序中使用getOrcreate方
千家信息网最后更新 2025年12月03日sparkStreaming程序的的部署、调优
(1)部署
部署方式:spark standalone集群、yarn集群、meoss集群...
driver的HA:如果希望driver程序在失败之后自动重启,那么需要在程序中使用getOrcreate方法重构streamingContext对象,以及在spark-submit中添加参数。
Checkpoint目录的设置:如果程序使用到checkpoint目录,就必须配置一个hdfs兼容的文件系统作为checkpoint目录,因为程序是分布式的,不能将checkpoint单独的设置在某一个节点
接收数据的方式: Receiver和direct
Receiver方式:需要给executor分配足够的资源,因为receiver接受的数据时存储在executor的内存中,尤其是在做window操作时,必须保证有足够的内存存储相应时间内的所有数据。 spark.streaming.receiver.writeAheadLog.enable参数设置为true,用于开启receive方式的WAL,保证数据不丢失。
direct方式:对于kafka direct方式,引入了backpressure机制,从而不需要设置spark.streaming.kafka.maxRatePerPartition,spark可以自动的估计receive最合理的接收速度,并根据情况动态调整,只需要设置:spark.streaming.backpressure.enabled设置为true即可
(2)调优
- 设置合理的CPU资源
- 在streaming程序中,CPU资源的使用可以分成两大类用于接收数据和用于处理数据,我们需要设置足够的CPU资源,使得有足够的CPU资源用于接收数据和处理数据,这样才能及时高效地处理数据。
- 数据接收的性能优化
- 通过网络接收数据时,会将数据反序列化,并存储在spark的内存中。
- 数据的并行化接收,就是启动多个receiver,设置多个DStream输入源
- 调节block interval参数,对于大多数的receiver来说,在将接收的数据保存的时候,都会做数据切分成一个一个的block,而block的个数决定了每一个batch的分区个数,而分区个数则决定了transformation启动的task的个数:batch interval / block interval(spark.streaming.blockInterval,默认为200ms,最小值为50ms)
- Spark数据处理并行度调优
- 如果在计算的任何stage中使用的并行task的数量没有足够多,那么集群的资源不能得到很好的利用,可以使用spark.default.parallelism,调整默认的并行的task个数,也可以在调用有shuffle的算子的时候手动指定numPar个数,调整task的并行度。
- Spark的任务调优
如果每秒钟启动的task过于多,那么发送这些task去worker节点上的executor的性能开销就会比较大,此时延迟就会变得高了。- Task的序列化:使用Kryo序列化机制来序列化task,减少task的大小,从而减少发送到executor的时间
- 执行模式,使用spark的自带的standalone运行spark程序,可以达到更少的task启动时间
- 序列化的调优
- 输入数据,在receiver接收的数据时存储在executor内存中的,需要保证数据的0丢失从而序列化
- 流式计算操作生成的持久化的RDD:流式计算操作生成的持久化的RDD,以及需要被窗口操作的数据都需要持久化
- batch interval调优
- 对于流式计算而言,为了使其可以稳定运行以及高效运行,最重要的就是对于batch生成之后,就尽可能快的处理掉。 在构建StreamingContext的时候,需要我们传进一个参数,用于设置Spark Streaming批处理的时间间隔。Spark会每隔batchDuration时间去提交一次Job,如果你的Job处理的时间超过了batchDuration的设置,那么会导致后面的作业无法按时提交,随着时间的推移,越来越多的作业被拖延,最后导致整个Streaming作业被阻塞,这就间接地导致无法实时处理数据,最终导致程序崩溃。所以针对自己的业务,设置批处理时间尤为重要。
- Spark内存调优
- DStream的持久化,将大量的数据持久化为byte数据,减少了数据序列化话后的对象,降低了GC的频率。当然为了进一步的降低内存的使用率,可以使用压缩:spark.rdd.compress这是为true即可
- 清理旧数据,将保存在内存中已经被使用过的数据进行删除,释放内存。以window操作为例,如果窗口的时间为10分钟,spark中会保持这10分钟的数据,之后在处理完成之后,就会将数据进行清除
数据
时间
内存
处理
程序
序列
个数
方式
资源
参数
集群
存储
时候
目录
作业
保证
生成
调整
运行
重要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全论文模板画画
绑定服务器失败
软件开发研究生平均工资
吉林党员党性体检软件开发
网络安全与执法宣传文案
企业网络安全问题被处罚
安全的三星手机服务器租用
油站平台司机端软件开发
数据库技术基础相关试题
常用关系型数据库
服务器装mod
网络安全使用标签
歌尔的软件开发是做什么的
如何用代码创建数据库
服务器 防御
生产环境数据库虚拟机
数据库封锁 理解
征文网络安全教育体会
数据库恢复技术ppt
中国电子高校eda软件开发
系统软件开发流程管理软件
瀚高数据库测试环境
使用模块创建教职员数据库
服务器 系统备份
小区物业网络安全应急预案
哪个数据库可以查港股
网络安全公司服务器
软件开发的三个阶段
浙江网络安全审计硬件生产厂家
南宁直销软件开发公司哪个好