Apache Флинк и Apache Пульсар - PullRequest
1 голос
/ 23 января 2020

Я использую Flink для чтения данных с Apache Pulsar. У меня есть разделенная топи c в пульсар с 8 разделами. Я создал 1000 сообщений в этой топике c, распределенных по 8 разделам. У меня в ноутбуке 8 ядер, поэтому у меня 8 подзадач (по умолчанию параллелизм = количество ядер). Я открыл Flink-UI после выполнения кода из Eclipse и обнаружил, что некоторые подзадачи не получают никаких записей (в режиме ожидания). Я ожидаю, что будут использованы все 8 подзадач (я ожидаю, что каждая подзадача будет сопоставлена ​​с одним разделом в моей топи c).

После перезапуска задания я обнаружил, что иногда используется 3 подзадачи, а иногда 4 задачи, в то время как остальные подзадачи простаивают.

Пожалуйста, обратитесь в службу поддержки, чтобы прояснить этот сценарий.

Также, как я могу узнать, что есть перестановка между суб-дублями или нет?

Мой код:

ConsumerConfigurationData<String> consumerConfigurationData = new ConsumerConfigurationData<>();

Set<String> topicsSet = new HashSet<>();
topicsSet.add("flink-08");

consumerConfigurationData.setTopicNames(topicsSet);
consumerConfigurationData.setSubscriptionName("my-sub0111");
consumerConfigurationData.setSubscriptionType(SubscriptionType.Key_Shared);
consumerConfigurationData.setConsumerName("consumer-01");
consumerConfigurationData.setSubscriptionInitialPosition(SubscriptionInitialPosition.Earliest);

PulsarSourceBuilder<String> builder = PulsarSourceBuilder.builder(new SimpleStringSchema()).pulsarAllConsumerConf(consumerConfigurationData).serviceUrl("pulsar://localhost:6650");

SourceFunction<String> src = builder.build();
DataStream<String> stream = env.addSource(src);

stream.print(" >>> ");

1 Ответ

0 голосов
/ 28 января 2020

Что касается вопроса о Пульсаре, я не знаю достаточно, чтобы помочь. Я рекомендую установить более крупный тест и посмотреть, как это получится. Обычно у вас было бы больше разделов, чем слотов, и некоторые слоты потребляли бы несколько разделов несколько случайным образом.

Кроме того, как я могу узнать, что между суб-дублями существует перестановка или нет?

Самый простой способ - взглянуть на топологию веб-интерфейса Flink. Там вы должны увидеть количество задач и типы каналов. Вы можете опубликовать снимок экрана, если хотите получить более подробную информацию, но в этом случае ничто не будет перетасовано, поскольку у вас есть только источник и приемник.

...