#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. Вероятно, он вообще работает только в локальном исполнителе.