火花流放慢

时间:2019-01-04 16:57:15

标签: apache-spark spark-streaming spark-streaming-kafka

在我们的spark应用程序中,我们正在使用Kafka流并将数据存储到Cassandra DB。

首先,我们在没有反压的情况下运行流,并经历了一个奇怪的异常,其中处理时间恒定为1分钟左右,但是调度延迟却在增加。这样,队列不断堆积,最终使流崩溃。

有人想为什么会发生这种情况?如果不是处理,什么会导致如此严重的延迟? enter image description here

然后,我们尝试使用反压(增加maxRatePerPartition)进行相同的设置,最初,一切运行良好。背压起到了节流的作用,我们能够以〜 100K /分钟的恒定速率进行处理。

然后,几个小时后,情况发生了变化,速率迅速下降到 5K /分钟。处理时间仅为5-6秒,没有调度延迟,但是反压使速率保持在5k /分钟,并且从未增加。实际上,根本没有理由将速度降低到5K。

我们的设置:

Window: 1 minute
spark.streaming.kafka.maxRatePerPartition = 500 (4 partition * 60 sec * 500 = 120K / window)
spark.streaming.backpressure.enabled = true
spark.streaming.kafka.allowNonConsecutiveOffsets = true
spark.streaming.kafka.consumer.cache.enabled = false

具有1个主节点和2个工作节点的火花群集

0 个答案:

没有答案