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