Spark Streaming反压机制初探

概述

Spark Streaming中的反压机制是Spark 1.5.0推出的新特性,可以根据处理效率动态调整摄入速率。

当批处理时间(Batch Processing Time)大于批次间隔(Batch Interval,即 BatchDuration)时,说明处理数据的速度小于数据摄入的速度,持续时间过长或源头数据暴增,容易造成数据在内存中堆积,最终导致Executor OOM或任务奔溃。

反压机制原理

根据流数据的处理效率动态调整摄入速率,以达到限流的目的。

反压机制相关参数

     1.     spark.streaming.backpressure.enabled
             是否启用反压机制(spark1.5),启用后自动的动态调整摄入速率,默认值false。 

     2.     spark.streaming.backpressure.initialRate

             启用背压机制时每个receiving将接收第一批数据的初始最大接收速率,默认值无。

     3.     spark.streaming.kafka.maxRatePerPartition

             使用新Kafka直接流API时(即:Direct模式),从每个Kafka分区读取数据的最大速率,默认没有设置。

     4.     spark.streaming.kafka.minRatePerPartition

             使用新Kafka直接流API时(即:Direct模式),从每个Kafka分区读取数据的最小速率,默认是1。             

     5.     spark.streaming.receiver.maxRate

             每个接收器将接收数据的最大速率,配置设置为0或负数将对速率没有限制,仅在Receiver模式下有效,默认没有设置

 

注意:

1.  摄入速率指的是每秒每个分区最大摄入的数据条数

2.  当spark.streaming.backpressure.enabled值为true,spark.streaming.receiver.maxRate或          spark.streaming.kafka.maxRatePerPartition设置后,动态摄入速率设置的最大值等于        spark.streaming.receiver.maxRate或spark.streaming.kafka.maxRatePerPartition的值

3.  spark.streaming.backpressure.initialRate参数,有些博客上写的是只适用于Receiver Stream。然而我在kafka的Direct模式下测试时发现该参数依然有效,不同的之处在于,Spark Streaming程序运行后的1、2两个批次数据都受限于该参数,而非仅第一个批次数据受限。后面有时间看下源码是什么情况。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值