Объёмы данных в крупных организациях растут быстрее, чем мощность отдельного сервера. Логи порталов, выгрузки из учётных систем, журналы транзакций за несколько лет – всё это уже не помещается в память одной машины и медленно читается даже с быстрых дисков. Вертикальное масштабирование упирается в потолок: следующий сервер стоит вдвое дороже, а считает не вдвое быстрее. MapReduce – модель, которая решает задачу иначе: вычисление разносят по десяткам обычных машин и собирают результат обратно.

Что такое MapReduce и зачем он нужен

Модель Google описал в 2004 году, а её открытую реализацию – Hadoop – за несколько лет довели до рабочего состояния в Yahoo и Apache. Идея простая. Вычисление делят на две фазы. На фазе map каждый узел независимо обрабатывает свой кусок данных и выдаёт пары «ключ – значение». На фазе reduce система группирует записи по ключу и сворачивает их в итог: сумму, счётчик, среднее, список.

Между фазами фреймворк сам перемешивает и сортирует данные (shuffle), сам перезапускает упавшие задачи, сам докладывает данные туда, где есть свободные узлы. Программист пишет две функции, а распределение, отказоустойчивость и балансировку берёт на себя платформа. Данные при этом лежат в распределённой файловой системе HDFS – блоками по нескольку реплик, так что отказ диска или целой ноды не теряет результат.

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

Где это работает в госсекторе и крупном бизнесе

Задачи, которые раньше не считались вовсе, на кластере становятся рутиной. Разбор журналов федеральных порталов – кто, когда и какими сервисами пользовался – даёт картину нагрузки и поведения заявителей. Для растущего трафика личного кабинета на госуслугах это прямой способ понять, где очереди и где отваливаются пользователи.

Второй класс задач – сверка и агрегация данных из разнородных источников. Когда сведения приходят через межведомственный обмен, их нужно сопоставлять, чистить от дублей и считать показатели в разрезе ведомств и регионов. MapReduce обрабатывает такие выгрузки пакетно, по ночам, не нагружая боевые базы. Похожая история – с архивами электронного документооборота: полнотекстовая индексация и аналитика по миллионам документов укладываются в одну распределённую задачу.

Чего ждать и где границы

MapReduce – инструмент пакетной обработки, а не онлайн-ответов. Запрос к кластеру отрабатывает минуты и часы, а не миллисекунды, поэтому интерактивные системы на нём не строят. Не всякая задача ложится на две фазы: сложные графовые алгоритмы и итеративные расчёты приходится разбивать на цепочки заданий, и накладные расходы растут.

Кластер требует администрирования: настройка HDFS, мониторинг узлов, планирование ёмкости. Окупается это на объёмах от единиц терабайт и выше – на меньших данных проще обычная СУБД. Когда порог пройден, пакетная обработка под конкретные регламенты переходит в зону хранилищ данных и аналитики.

Вывод

MapReduce снимает потолок одной машины: вычисление разносят по дешёвому железу, а платформа берёт на себя отказоустойчивость и масштаб. Для госпорталов и крупных учётных систем это рабочий способ считать то, что раньше не считалось. Начинать стоит с одной измеримой задачи – разбора логов или сверки выгрузок и наращивать кластер по мере роста данных.