Потоковые данные

Якимов Николай Михайлович

Большие данные

В качестве определяющих характеристик для “Big Data” традиционно называют:

  • Объём
  • Скорость
  • Разнообразие

Необходимость параллельных и распределённых вычислений

Закон Амдала:

\[S(p) = \left(\alpha+\frac{1-\alpha}{p}\right)^{-1},\] где \(\alpha\) – доля вычислений, которые могут быть произведены только последовательно ввиду наличия зависимостей.

MapReduce

Работа MapReduce состоит из двух шагов:

  1. Map
  2. Reduce

Hadoop

Четыре модуля:

  • Common
  • HDFS
  • YARN
  • MapReduce

Пакетная обработка

Недостатки:

  1. Необходимость хранения большого объёма необработанных данных
  2. Большие задержки между получением данных и их обработкой
  3. Невозможность непосредственной обработки “неограниченных” данных, т.е. данных, которые невозможно однозначно разделить на блоки.

Потоковая обработка

Системы реального времени:

  • Жёсткого реального времени
  • Мягкого реального времени
  • “Почти реального времени”
Система потоковой обработки данных
Система нежёсткого реального времени, которая должна делать данные доступными, когда клиентское приложение “хочет” их видеть.

Общая архитектура потоковой системы:

Масштабирование

Два подхода:

  1. Вертикальное масштабирование
  2. Горизонтальное масштабирование

Сбор данных

Этап сбора данных – этап, на котором данные поступают в систему.

Типичные подходы к сбору данных

Паттерны взаимодействия:

  • Запрос-ответ
  • Издатель-подписчик
  • Одностороннее взаимодействие
  • Запрос-подтверждение
  • Поток

Запрос-ответ

Синхронная модель:

Полуасинхронная модель:

Полноасинхронная модель:

Запрос-подтверждение

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

Издатель-подписчик

Одностороннее взаимодействие

Аналогичен паттерну запрос-подтверждение, с той разницей, что клиент не получает подтверждения. И вообще никакого ответа.

Поток

Масштабирование паттернов взаимодействия

Масштабирование паттернов запрос-ответ

Масштабирование паттерна “поток”

Отказоустойчивость

Подходы:

  • Контрольные точки
  • Протоколирование/журналирование

Контрольные точки

Протоколы контрольных точек:

  • Глобальный снимок
  • Возможность потери данных

Протоколирование

Подходы:

  1. Протоколирование на стороне получателя (RBML)
  2. Протоколирование на стороне отправителя (SBML)
  3. Гибридный подход (HML)

Протоколирование на стороне получателя

Безаварийный путь:

Авария:

Протоколирование на стороне отправителя

Безаварийный путь:

Авария:

Гибридное протоколирование