Flink потребительское отставание после объединения потоков обновляется с различной частотой - PullRequest
0 голосов
/ 12 марта 2019

Мы используем Flink 1.2.1, и мы потребляем от 2 потоков kafka путем объединения одного потока в другой и обрабатываем объединенный поток.Например, stream1.union (stream2). Тем не менее, stream2 имеет более чем в 100 раз больший объем, чем stream1, и мы наблюдаем, что существует огромная задержка потребления (более 3 дней данных) для stream2, но очень небольшая задержка в stream1.У нас уже есть 9 разделов, но 1, как параллелизм, увеличит паралелизм, решит проблему задержки потребления для stream2, или мы не должны делать объединение в этом случае вообще.

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Да, попробуйте увеличить параллелизм для источника stream2 - это должно помочь: env.addSource(kafkaStream2Consumer).setParallelism(9)

На данный момент у вас есть узкое место в 1 ядре, которое должно не отставать от потребления данных stream2. Чтобы полностью использовать параллелизм Kafka, параллелизм FlinkKafkaConsumer должен быть> = числом разделов темы, из которых он потребляет.

0 голосов
/ 15 марта 2019

.union() не должно вносить вклад во временную задержку, AFAIK.

И да, увеличение параллелизма должно помочь, если на самом деле задержка в обработке связана с тем, что ваши операторы-потребители (или приемники) ограничены ЦП.

Если проблема связана с чем-то на стороне приемника, которому не может помочь более высокий параллелизм (например, вы пишете в БД, и это на максимальной скорости приема), то увеличение параллелизма приемника не поможет, конечно.

...