Позвольте мне рассказать об этом, я очень новичок во Flink и стараюсь уловить как можно больше концепций.
Допустим, у меня есть флинк-кластер с 10 диспетчерами задач. У меня есть работа над каждым из них. Задание также использует широковещательное состояние. Это состояние широковещания создается путем чтения 5 файлов S3 каждые 10 минут, выполнения некоторой обработки и создания карты int to list of strings
, которая транслируется.
Вопрос: Где происходит чтение файлов, это в JobManager, который читает и обрабатывает файл и отправляет обработанное содержимое диспетчерам задач.
Or
это менеджеры задач, которые делают все чтение и обработку. Если это так, то как flink гарантирует, что если диспетчеру задач не удается прочитать из S3, состояние широковещательной передачи одинаково для всех диспетчеров задач.
ИЗМЕНИТЬ
поэтому диспетчер задач считывает широковещательный поток и транслирует его нижестоящим задачам.
Например. Допустим, есть поток Kafka с 5 разделами, которые нужно транслировать. Также есть подчиненный оператор с параллелизмом 5.
- Задача потребителя раздела 1, считывает элемент из потока и переводит его в состояние широковещания. Как только это установлено, состояние транслируется на все задачи нижестоящего оператора 5.
- Задача потребителя раздела 2, считывает элемент из потока и переводит его в состояние широковещания.
Вопрос: На этом этапе нужно ли нам убедиться, что мы не перезаписываем элементы из раздела 1, когда мы устанавливаем состояние широковещания из элемента раздела 2, или сам flink управляет этим.
OR
Также как мы можем быть уверены, что к моменту, когда раздел 2 потребляет элемент и устанавливает состояние широковещания, состояние широковещательной передачи раздела 1 достигло задачи оператора нижестоящего раздела 2.