MapReduce и параллельные СУБД

Отображение параллельных СУБД на MapReduce


Привлекательной чертой модели программирования MapReduce является простота. MR-программа состоит всего из двух функций Map и Reduce, программируемых пользователем для обработки пар элементов данных "ключ/значение" . Входные данные хранятся в наборе разделов распределенной файловой системы, развернутой в каждом узле кластера. Затем программа включается в инфраструктуру распределенной обработки и выполняется в манере, которая будет описана ниже. Модель MR была впервые описана Google в 2004 г., и сегодня существует множество ее свободно доступных и коммерческих реализаций. Наиболее популярной MR-системой является Hadoop – проект с открытыми исходными текстами, выполняемый Yahoo! и Apache Software Foundation.

Семантика модели MR не уникальна. Фильтрация и преобразование отдельных элементов данных (кортежей таблиц) могут быть произведены современной СУБД с использованием SQL. В качестве аналога операций Map, которые не так легко выражаются средствами SQL, во многих СУБД поддерживаются функции, определяемые пользователями (user-defined functions, UDF) . Возможности наращивания функциональных возможностей UDF эквивалентны возможностям операции Map. Агрегаты SQL, дополняемые UDF и агрегатами, определяемыми пользователями, обеспечивают пользователей теми же функциональными возможностями, что и MR-операция Reduce. Наконец, перегруппировка данных, происходящая в MR между выполнением задач Map и Reduce, эквивалентна выполнению операции GROUP BY в SQL. Все это дает основания считать, что параллельные СУБД обеспечивают ту же вычислительную модель, что и MR, и сверх того — ещё и декларативный язык (SQL).

В течение двух десятилетий широко рекламировалась линейная масштабируемость параллельных СУБД . Это означает, что при добавлении к кластеру узлов можно пропорционально увеличить размер базы данных, сохранив прежнее время реакции системы. Несколько производственных баз данных объемом в несколько петабайт очень крупных компаний, поддерживаются на кластерах, содержащих около 100 узлов . Люди, управляющие этими системами, не сообщают о потребности в дополнительном параллелизме. Таким образом, параллельные СУБД обеспечивают отличную масштабируемость в диапазоне числа узлов, требуемом заказчикам. Не видно причин, по которым масштабируемость нельзя было бы увеличить до уровня, упоминаемого Джеффри Дином (Jeffrey Dean) и Санджаем Гемаватом (Sanjay Ghemawat) в , если это потребуется заказчикам.



Содержание раздела