Flink - несколько экземпляров развертывания приложения flink на кубернетах

Мне нужна помощь по развертыванию приложения Flink на K8

у нас есть 3 источника, которые будут отправлять условие триггера в виде SQL-запросов. Общее количество запросов ~ 3-6k и большая нагрузка на экземпляр flink. Я пытаюсь выполнить, но это было очень медленно и требовало много времени для запуска.

Из-за большого количества запросов мы решили создать несколько экземпляров приложения flink для каждого источника. так что эффективно один экземпляр flink будет выполнять только ~ 1-2K запросов.

Пример: источники запросов sql: A, B, C

Экземпляр Flink:

Приложение A - ›будет отвечать только за обработку запросов источника A

Приложение B - ›будет отвечать только за обработку запросов источника B

Приложение C - ›будет отвечать только за обработку запросов источника C

Я хочу развернуть эти экземпляры в Kubernetes

Вопрос:

а) можно ли развернуть автономную флинк-банку с мини-кластером (встроенным)? например, просто запустите основной метод: Java -cp mainMethod (sourceName - это аргумент командной строки A / B / C).

б) если один модуль k8 или экземпляр flink не работает, то как мы можем управлять им в другом модуле или другом экземпляре flink? Можно ли передать работу другому модулю или другому экземпляру флинка?

извините, если я перепутал две или более вещи :(

Ценю вашу помощь. Благодарность


person Ashutosh    schedule 24.08.2020    source источник
comment
Обычно вы справляетесь с этой проблемой большой нагрузки, увеличивая параллелизм исходной функции и (при необходимости) выясняя, как разделить запросы, чтобы у каждого подисточника была фактически одинаковая нагрузка. Почему это не вариант для вас?   -  person kkrugler    schedule 24.08.2020
comment
спасибо за ваши предложения, поэтому допустим, я разделил свои правила (запрос sql) на основе источника, чтобы распределить нагрузку на задачу. если есть какие-либо изменения в sql-запросе, это будет означать перезапуск всего экземпляра flink. Правильно? если да, то это простои для других источников, которых мы пытаемся избежать, создавая несколько экземпляров на основе источника.   -  person Ashutosh    schedule 26.08.2020


Ответы (1)


Не говоря уже о проблемах семантики только один раз, один из способов справиться с этим - иметь функцию параллельного источника, которая генерирует запросы SQL (по одному для каждой подзадачи), и нисходящий FlatMapFunction, который выполняет запрос (по одному для каждой подзадачи). . Затем ваш источник может отправлять обновления запроса, не заставляя вас перезапускать рабочий процесс.

person kkrugler    schedule 27.08.2020
comment
Изначально мой план был таким же, как функция источника будет получать запросы sql, а в дальнейшем она будет выполняться функцией карты. Я пробовал, но столкнулся с множеством проблем с сериализацией. вот обсуждение того же: stackoverflow.com/questions/62680606/ - person Ashutosh; 01.09.2020