#apache-flink
#apache-flink
Вопрос:
Мы используем Flink 1.2.1, и мы потребляем из 2 потоков kafka путем объединения одного потока в другой и обработки объединенного потока. например, stream1.union (stream2) Однако stream2 имеет более чем в 100 раз больший объем, чем stream1, и мы сталкиваемся с огромным отставанием в потреблении (более 3 дней данных) для stream2, но очень небольшим отставанием в stream1. У нас уже есть 9 разделов, но 1, как параллелизм, увеличил бы параллелизм, решив проблему задержки потребления для stream2, или мы вообще не должны делать объединение в этом случае.
Комментарии:
1. Что
TimeCharacteristic
для среды выполнения?2. Мы используем время обработки по умолчанию в качестве временной характеристики.
Ответ №1:
.union()
Не должно способствовать временной задержке, AFAIK.
И да, увеличение параллелизма должно помочь, если на самом деле задержка в обработке связана с тем, что ваши операторы-потребители (или приемник) ограничены процессором.
Если проблема связана с чем-то на стороне приемника, с чем не может помочь более высокий параллелизм (например, вы записываете в базу данных, и она работает с максимальной скоростью приема), то увеличение параллелизма приемника, конечно, не поможет.
Ответ №2:
Да, попробуйте увеличить параллелизм для источника stream2 — это должно помочь: env.addSource(kafkaStream2Consumer).setParallelism(9)
На данный момент у вас есть узкое место в 1 ядре, которому необходимо не отставать от потребления данных stream2. Чтобы полностью использовать параллелизм Kafka, параллелизм FlinkKafkaConsumer должен быть > = количеству тематических разделов, из которых он потребляет.