sparkStreaming程序的的部署、调优
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,(1)部署部署方式:spark standalone集群、yarn集群、meoss集群...driver的HA:如果希望driver程序在失败之后自动重启,那么需要在程序中使用getOrcreate方
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
上海品牌软件开发服务价钱
不懂互联网的软件开发
游戏软件开发区万达
网络安全呈现的态势
国家安全之网络安全篇
软件开发公司企业历史
国家信息网络安全违法案例
服务器总是发送失败
飞鱼互联网科技
公安部门怎么检查网络安全
极限网络技术股份
乌镇互联网大会网宿科技实况
unixoracle数据库
t3用友服务器
网络技术免费学习app
金华天道网络技术有限公司
教育部网络安全7
渭南高中生5g软件开发培训
群晖v2ray服务器教程
三盟科技服务器拆卸图解
个人文件服务器微信小程序版
广州六一网络技术公司
国家网络安全法的最新版本
数据库管理员的职责范围是什么
和安服务器管理
疫苗接种记录数据库
怎么把mymql数据库文件
南京网络安全审计系统咨询证书
管理绩效管理软件开发商
三盟科技服务器拆卸图解