MapReduce решил задачу обсчёта гигантских объёмов данных, но решил её по-своему: данные копятся в HDFS, а затем большое задание прогоняет их пачкой. Между событием и результатом проходят минуты, чаще часы. Для отчётности это приемлемо. Для антифрода, мониторинга сетей и оперативного контроля транзакций – нет. Когда ответ нужен через секунду после события, пакетная модель упирается в собственную природу: она считает прошлое, а не настоящее.
Где пакет перестаёт работать
Граница проходит по требованию к задержке. Если бизнес-процесс терпит лаг в часы – пакетный Hadoop, который как раз выходит в мейнстрим, остаётся верным выбором. Но есть классы задач, где это недопустимо.
Платёжный шлюз должен пометить подозрительную транзакцию до того, как она пройдёт, а не в ночном отчёте. Телеком-оператор отслеживает деградацию канала в момент, когда абоненты её ещё не почувствовали. Контролирующий орган видит аномалию в потоке деклараций сразу, а не по итогам квартала. Во всех случаях ценность данных падает с каждой секундой хранения. Пакетная обработка эту ценность сжигает в ожидании следующего запуска задания.
Потоковая модель: считать на лету
Потоковая обработка переворачивает логику. Вместо «накопить и обсчитать» система обрабатывает каждое событие по мере поступления, держа состояние в памяти. Запрос становится постоянным: он живёт в системе и реагирует на входящий поток, а не запускается по расписанию.
Инструменты уже зрелые для пилотов. Apache Storm, который Twitter открыл в прошлом году и сейчас проходит инкубацию в Apache, обрабатывает потоки топологиями из «спаутов» и «болтов» с гарантией обработки каждого сообщения. Yahoo развивает S4. Для буферизации и развязки источников от потребителей всё чаще ставят Apache Kafka – распределённый лог, который держит пиковую нагрузку и не теряет события. Связка «Kafka на входе, Storm на обработке» закрывает большинство сценариев реального времени.
Важно понимать ограничения. Потоковая система оперирует приближениями: точные агрегаты по всей истории – по-прежнему работа для пакета. Поэтому на практике строят гибрид: горячий слой даёт мгновенный, но приблизительный ответ, а пакетный слой пересчитывает точные показатели в фоне. Поток и пакет не конкуренты, а два контура одной архитектуры.
Что это меняет в проекте
Потоковая обработка не отменяет ETL-конвейеры – она меняет их топологию. Трансформации переезжают ближе к источнику и выполняются в движении, а не на стоянке в хранилище. Это требует пересмотра схемы: события нужно проектировать самодостаточными, с временными метками и идемпотентными ключами, иначе восстановление после сбоя превратится в гадание.
Для госсектора добавляется отдельный контур требований. Потоковая платформа держит данные в оперативной памяти кластера и реплицирует их между узлами – значит, периметр обработки и физическое размещение узлов попадают под те же требования к хранению данных внутри страны, что и классическое хранилище. Архитектуру реального времени проектируют с учётом этого с первого дня, а не латают на этапе аттестации.
Вывод
Потоковая обработка – не замена MapReduce, а ответ на задачи, которые пакет в принципе не решает. Начинать стоит с одного процесса, где задержка стоит денег: антифрод, мониторинг, оперативный контроль. Гибридная архитектура данных и рабочий пилот – от выбора движка до интеграции с существующим хранилищем – строятся в рамках аналитики и работы с данными.