我有一个sparkstream作业,它使用来自我可以配置数据速率生成的源的数据。首先,我开始以1000 rec/sec的速率生成数据。然后我改变了数据速率,以1000000 rec/sec的速度生成数据。当然,为了处理这个工作负载,我必须在spark中启用backpressure特性。然后我发现了这个帖子,这个,还有这个演讲,上面说spark使用反馈回路来控制spark工作中的接收器。所以我在 spark-submit
命令行。
--conf spark.streaming.backpressure.enabled=true
--conf spark.streaming.backpressure.initialRate=30
--conf spark.streaming.receiver.maxRate=1000000
日志显示已启用: 20/07/22 15:27:18 INFO PIDRateEstimator: Created PIDRateEstimator with proportional = 1.0, integral = 0.2, derivative = 0.0, min rate = 100.0
我原以为spark会调整/调整接收器,以稳定的方式处理数据速率。我的意思是,spark将调整接收器,使其以30到1000000 rec/sec的速率消耗数据,因为它在属性上。但是当我没有启用backpressure特性时,我在sparkwebui上看到的几乎是一样的。spark作业试图消耗尽可能多的数据,但它仅达到约160000 rec/sec,不稳定,处理时间约为0.7 sec,有些拾取超过1秒。
暂无答案!
目前还没有任何答案,快来回答吧!