события flink поступают в jobmanager, но не в taskmanager в кластере

#apache-flink #flink-streaming #flink-sql #flink-batch

#apache-flink #flink-потоковая передача #flink-sql #flink-batch

Вопрос:

Я пытаюсь запустить приложение flink в кластере. Приложение успешно развернуто, и я вижу, что jobmanger и taskmanager запущены, и регистрация ресурсов выполнена успешно.

Приложению требуется фиктивное событие, и оно работает нормально, и sql-запрос также возвращает результат (с помощью taskmanager).

Проблема: приложение получает события из центра обмена сообщениями, но эти сообщения относятся только к jobmanager и поступают в taskmanager для выполнения в кластере (автономно). Но он отлично работает с IntelliJ.

Я понимаю, что если бы у него был kafka, тогда addSource (новый FlinkKafkaConsumer()) работал, но для меня я должен зарегистрировать обратный вызов, а затем приходит сообщение onEvent.

существует ли какой-либо механизм, который может помочь отправлять события в taskmanager из jobmanager в кластере?

Ответ №1:

События вообще не должны обрабатываться в JobManager. Возможной причиной такого поведения является то, что вы запускаете приложение с помощью локального исполнителя. Не могли бы вы перепроверить, как вы создаете свою потоковую среду?

Комментарии:

1. спасибо, я использую «final StreamExecutionEnvironment ExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment()» . Для получения событий мне нужно настроить приложение listner, и я думаю, что listner становится частью jobmanager. (просто догадываюсь)

2. @Ashutosh, не могли бы вы, пожалуйста, объяснить, если это возможно, зачем вам нужно регистрировать обратный вызов и как вы используете события? Спасибо.

3. Такое ощущение, что вы используете не правильный источник, а какое-то пользовательское решение, которое использует события только при создании DAG. Вероятно, он вообще работает только в локальном исполнителе.