Состояние вещания Flink с более чем 1 параллелизмом - PullRequest
0 голосов
/ 21 октября 2019

Позвольте мне просто выразить это, я очень новичок в Flink и стараюсь как можно больше схватывать концепции.

Допустим, у меня есть кластер Flink с 10 менеджерами задач. У меня есть работа по быстрому бегу на каждом. Работа также использует состояние трансляции. Это состояние широковещания создается путем чтения 5 файлов S3 каждые 10 минут, некоторой обработки и создания карты int to list of strings, которая транслируется.

Вопрос: Где происходит чтение файлов, находится ли он в JobManager, который читает и обрабатывает файл и передает обработанный контент менеджерам задач.

Или

- это менеджеры задач, которые выполняют все чтение и обработку. Если это именно тот случай, то как Flink должен убедиться, что если диспетчеру задач не удается прочитать с S3, широковещательное состояние одинаково для всех диспетчеров задач.

РЕДАКТИРОВАТЬ

, поэтому диспетчер задач считывает широковещательный поток и передает его последующим задачам.

Например. Допустим, есть поток Кафки с 5 разделами, которые необходимо транслировать. Также имеется оператор ниже по потоку с параллелизмом 5.

  1. Потребительская задача раздела 1, считывает элемент из потока и переводит его в состояние широковещания. Как только это установлено, состояние передается всем задачам нижестоящего оператора 5.
  2. Потребительская задача раздела 2, считывает элемент из потока и переводит его в состояние широковещания.

Вопрос: На этом этапе нам нужно убедиться, что мы не перезаписываем элементы из раздела 1, когда мы устанавливаем состояние трансляции из элемента раздела 2 или flinkсам управляет этим.

ИЛИ

Кроме того, как мы можем быть уверены, что к тому времени, когда раздел 2 использовал элемент и установил состояние широковещания, состояние широковещательной передачи раздела 1 достигло задачи оператора нисходящего потока раздела 2.

1 Ответ

2 голосов
/ 21 октября 2019

Где происходит чтение файлов?

TaskManager. JobManager отвечает только за управление задачей, такой как планирование и отработка отказа.

Как отправить обработанный контент менеджерам задач?

Вы можете просто представить процесс состояния широковещания как отправку одного и того же сообщения всем последующим задачам вместо отправкик конкретному.

Как flink справляется с этим, если диспетчер задач не может прочитать с S3?

Если исходная задача не удается прочитать с S3, я считаю,произойдет перезапуск (возможно, полный перезапуск или, возможно, частичный перезапуск), и механизм контрольных точек обеспечит согласованность состояния.

Состояние широковещания одинаково для всех диспетчеров задач.

На самом деле состояние широковещания не одинаково во всех задачах. Причина в том, что нельзя гарантировать доставку событий к задаче в том же порядке во время передачи по сети.

...