В нашем приложении spark мы используем поток Kafka и храним данные в Cassandra DB.
Во-первых, мы запустили поток без противодавления и испытали странную аномалию, когда время обработки было постоянным ~ 1 минута, однако задержка планирования увеличивалась. Таким образом очередь накапливалась, в конечном итоге сбивая поток.
Есть мысли, почему это может происходить? Если это не обработка, что может вызвать такие серьезные задержки?
Затем мы попробовали ту же настройку с противодавлением (с увеличенным maxRatePerPartition
), изначально все работало хорошо. Противодавление сделало свою работу дросселирования, и мы смогли обрабатывать с постоянной скоростью ~ 100K / мин .
Затем, через несколько часов, что-то произошло, и скорость резко упала до 5K / мин. . Время обработки составляло всего 5-6 секунд без задержки планирования, но обратное давление абсурдно удерживало скорость на уровне 5 к / мин и никогда не увеличивалось. На самом деле не было никакой причины снижать скорость до 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
Spark кластер с одним главным и двумя рабочими узлами