Модель распределенных вычислений MapReduce - Технологии больших данных: анализ и выбор решения для реализации проекта

Программная модель данных, получившая название "MapReduce", была создана несколько лет назад в компании Google, и там же была осуществлена первая реализация этой технологии на основе распределенной файловой системы Google File System. Этот проект активно используется в программных продуктах самой компании Google, но является частным и недоступен для использования вне продуктов Google.

Существует так же иная реализация в свободном доступе - Hadoop MapReduce (с открытыми исходными текстами), которая была выполнена в проекте Apache Hadoop. технология основана на использовании распределенной файловой системы HDFS (Hadoop Distributed File System)[4]. Наибольшую популярность MapReduce получила благодаря реализации проекта Hadoop, несомненную значимость имел факт доступности и открытости программного кода. Широкое использование технологии Hadoop MapReduce в различных проектах (большей частью в исследовательских) приносит большую пользу, стимулируя разработчиков к постоянному совершенствованию технологии.

В модели MapReduce все операции вычисления производятся над множествами пар (входных данных), именуемых "ключ-значение". В результате каждого вычисления также производится определенное множество выходных пар "ключ-значение". Для представления вычислений в среде MapReduce используются две ключевые функции: "Map" и "Reduce". Обе функции в явном виде кодируются разработчиками приложений в среде программирования MapReduce.

Реализации проектов на MapReduce ориентированы на использование среде распределенных кластеров со следующими характеристиками:

Узлы среды выполнения приложений обычно представляют собой компьютеры общего назначения с операционной системой Linux;

Кластер состоит из сотен или тысяч машин (вероятны отказы отдельных узлов);

Для хранения данных используются недорогие дисковые устройства, подключенные напрямую к отдельным машинам;

Используется распределенная файловая система для управления данными, хранящихся на этих дисках;

Пользователи представляют свои задания в систему планирования; каждое задание состоит из некоторого набора задач, которые отображаются планировщиком на некоторый набор узлов кластера.

Технология MapReduce предназначена для обработки больших объемов данных с использованием машин, количество которых может достигать тысяч, поэтому обязательно должна присутствовать устойчивость к отказам отдельных машин. Существует приложение-распорядитель, который периодически посылает каждому узлу (исполнителю) контрольные сообщения. Если определенный узел не отвечает на сообщение в течение установленного времени, система считает его вышедшим из строя. В этом случае все задачи уровня "Map", уже выполненные и еще выполнявшиеся этим узлом-исполнителем, переводятся в свое исходное состояние, после чего можно заново планировать их выполнение другими узлами.

Преимущества клиент-серверных организаций баз данных очевидны: в архитектуре серверы поддерживают большую базу данных, которая сохраняется в одном экземпляре и доступна десяткам и сотням приложений, выполняемых на стороне клиентов или в промежуточных серверах. Однако при использовании SQL-ориентированной организации баз данных осуществляется следующая схема работы: от клиентов на сервер БД отправляются высокоуровневые декларативные запросы, в обратную сторону, от сервера к клиенту, пересылаются результирующие данные произвольно большого объема.

Во всех традиционных серверных организациях реляционных баз данных существует возможность переноса вычислений на сторону, реализация которой не является сложной разработкой. При этом в параллельных БД (например, категория баз sharing-nothing) ситуация иная: SQL-запросы выполняются оптимизатором запросов параллельно и автоматически. Но оптимизатор не имеет возможности выполнить параллельно определенную пользователем процедуру или функцию, реализованную не на языке SQL, а на одном из традиционных языков программирования (как правило, с включением вызовов операторов SQL). Технически выполнение распараллеливания такие процедуры и функции можно не выполнять, а производить вычисления в одном узле кластера. Но тогда необходимо сохранять в текущем узле все данные, требуемые для выполнения процедуры или функции, для чего потребуется массовая пересылка данных по сети, что делает незначительными все преимущества параллельных реляционных баз данных, производительность которых основывается именно на параллельных вычислениях.

Из вышеописанных трудностей следует сделать вывод: требуется поддержка механизма распараллеливания пользовательских процедур и функций в аналитических системам баз данных, поскольку аналитикам необходимо выполнять анализ данных на клиентских рабочих станциях, постоянно получая данные из центрального хранилища большого объема [4]. Как показывает опыт многих производственных разработок, может быть применена модель MapReduce для обеспечения возможностей серверного программирования в массивно-параллельной среде систем баз данных.

Для сравнения эффективности технологий MapReduce и массивно-параллельных реляционных баз данных при решении аналитических задач необходимо отметить, что развитие и зрелость технологии параллельных баз данных категории без совместно используемых ресурсов (sharing-nothing) позволяет им обходиться кластерами (100 узлов) для поддержки самых больших на сегодняшний день аналитических баз. Размерность в петабайтах - 1015 байт - 1024 терабайт. Вместе с тем, особые качества технологии MapReduce - масштабируемость и отказоустойчивость - проявляются при применении кластеров с тысячами узлов. В связи с ростом объема данных, требующих анализа, возрастает число приложений, для поддержки которых необходимы кластеры с числом узлов, превышающим 100. Имеющиеся в настоящее время параллельные СУБД не масштабируются до сотен узлов должным образом. Это следствие следующих причин:

Массивно-параллельные СУБД проектировались в расчете на редкость отказы, поэтому при увеличении числа узлов кластера возрастает вероятность отказов отдельных узлов;

При значительном масштабировании полной однородности среды (все узлы кластера обладают одинаковой производительностью), добиться почти невозможно, а современные параллельные СУБД требуют однородной аппаратной среды

Существуют системы аналитических баз данных, которым требуются кластеры с более чем несколькими десятками узлов для достижения требуемой производительности;

Существующие параллельные базы данных не тестировались в более масштабных средах, и при их дальнейшей миграции могут встретиться непредвиденные технические проблемы.

Технология MapReduce может обеспечить требуемые характеристики масштабируемости и отказоустойчивости, поскольку разрабатывалась с расчетом на масштабирование до тысяч узлов, дополнительно, реализация от Google эффективно используется для поддержки внутренних операций компании. Несмотря на то, что изначально технология MapReduce ориентировалась на обработку неструктурированных данных (текстовых), существуют показательные примеры ее использования для обработки огромных объемов структурированной информации.

Похожие статьи




Модель распределенных вычислений MapReduce - Технологии больших данных: анализ и выбор решения для реализации проекта

Предыдущая | Следующая