Вопросы дизайна Flink - параллельная обработка и управление состоянием - PullRequest
0 голосов
/ 28 сентября 2018

Мы новичок во Flink и хотели бы получить некоторые идеи достижения параллелизма и поддержания состояния во Flink для нескольких интересных проблем.

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

  1. Несколько источников событий отправляют файлы событий в нашу систему.
  2. Файлы из разных источников событий должны обрабатываться параллельно.
  3. Каждый файл содержит события с одним или несколькими типами событий.Мы хотим обработать каждый файл событий следующим образом: 3.1.Сгруппируйте все события одного и того же типа (например, EvTypeA, EvTypeB, EvTypeC и т. Д.).3.2.Упорядочите группы событий в предварительно определенном порядке и обработайте их в следующем порядке (EvTypeA -> EvTypeB -> EvTypeC).3.3 На основе внешней конфигурации события в каждой группе типов событий должны обрабатываться либо последовательно (в зависимости от времени события, указанного в каждом событии), либо параллельно.Каждый тип события будет обрабатываться с использованием другого класса Java.3.4.После обработки всех событий для каждого типа событий обработайте события для следующей группы типов событий и т. Д.Важно отметить, что все события в каждой группе типов событий должны быть обработаны перед обработкой событий в следующей группе событий.Также, как упомянуто выше, события в каждой группе типов событий могут обрабатываться последовательно или параллельно на основе конфигурации.3.5 Разные файлы могут содержать разные типы событий и разное количество типов событий.Например, один файл может содержать EvTypeA + EvTypeB, а другой файл может содержать EvTypeA + EvTypeB + EvTypeC.Таким образом, план выполнения для каждого файла будет разным.

Вопросы:

  1. Параллелизм должен быть достигнут для нескольких источников событий, а также внутри каждой группы типов событий.Как мы можем достичь этого типа параллелизма, используя Flink?
  2. Мы хотим записывать прогресс обработки каждого файла.Таким образом, если во время обработки файла произойдет сбой системы, мы сможем возобновить с того места, где мы оставили.Например, если файл содержит 1000 событий, 100 событий EvTypeA, 700 событий EvTypeB, 200 событий EvTypeC и сбой системы происходит после обработки всех 100 событий EvTypeA и после обработки 150 событий EvTypeB, система должна возобновить обработку с151-е событие EvTypeB.
  3. Мы также хотим показать ход каждого статуса обработки файла на панели инструментов, которая показывает все обрабатываемые файлы и статус прогресса для каждого файла (например, 250 из 1000 обработанных событий).Должны ли мы использовать управление состоянием Flink для сохранения состояния каждого обработанного события или мы должны использовать собственное управление состоянием и почему?
  4. Если узел задачи Flink, который обрабатывал событие, дает сбой, Flink направит эту задачу на другой узелавтоматически?

Несколько строк кода Flink, которые показывают, как решить вышеуказанные проблемы, были бы действительно полезны.Спасибо за любую помощь.

Фраза поиска: EventParallelism

  • lgfmt
...