Дэвид Девитт отвергает саму возможность использования Hadoop в продуктах управления базами данных Microsoft

«Мы никогда не будем использовать код Hadoop ни в одном из наших продуктов», — заявил ведущий технический специалист Microsoft и профессор Университета Мэдисона (шт. Висконсин) Дэвид Девитт.

Такое отношение Девитта неудивительно. Девитт — весьма авторитетный в научном мире эксперт по параллельным СУБД SQL, участвовавший в разработке трех из них. Кроме того, он один из авторов статьи, в которой утверждается, что базы данных SQL по-прежнему превосходят MapReduce при решении большинства задач.

«Каждый производитель баз данных спешит заявить, что он использует Hadoop, поскольку она популярна, — заметил Девитт. — И все же есть место для сомнения. Базы данных SQL по-прежнему работают весьма неплохо».

В Университете Мэдисона Девитт возглавляет научную лабораторию по проблемам баз данных, которая помогает Microsoft в исследованиях и разработке, связанных с новой версией Parallel Data Warehousing сервера SQL Server 2008 R2, ранее получившего название Project Madison.

Новая версия SQL Server пополнится некоторыми новыми аналитическими функциями, которые аналогичны ряду функций MapReduce/Hadoop.

Эти дополнения появятся в результате интеграции технологии компании DATAllegro, которую купила Microsoft, а не Hadoop.

Тем не менее Девитт признал, что MapReduce/Hadoop более эффективно, чем SQL, позволяет предотвращать отказы при длительной обработке запросов.

Microsoft в конечном итоге может попытаться интегрировать такие возможности в будущие версии SQL Server, ориентированные на поддержку хранилищ данных.

Скорее всего, это будет сделано в рамках проекта самой Microsoft, а не путем лицензирования свободно распространяемого кода Hadoop, создаваемого под эгидой Apache Software Foundation.

Компания IBM входит в число основных корпоративных сторонников Apache. «И это неудивительно, поскольку в IBM возлагают на Hadoop большие надежды», — заметил Энант Джингран, директор по технологии подразделения управления информацией корпорации IBM.

«Я не говорю, что объединение Hadoop с СУБД позволит решить все проблемы, — подчеркнул Джингран. — Но в конечном итоге, как мне кажется, каждое предприятие захочет использовать Hadoop. Правда, пока я не знаю, в каком именно виде».

Остается открытым вопрос о том, захотят ли предприятия интегрировать Hadoop в свои базы данных в виде отдельного решения хранилищ данных или в качестве исключительно Web-сервиса, когда использование Hadoop скрыто под внешней надстройкой, как это было в экспериментальном сервисе IBM M2.

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

«Те производители, которые просто хотят использовать Hadoop для создания альтернативы СУБД, вряд ли добьются успеха, — заявил Джингран. — Технология SQL поддерживает экосистему стоимостью 300 млрд долл. Она очень надежна. Мне сейчас 46 лет, но я отойду от дел раньше, чем SQL».

Критики отмечают, что у Oracle Database могут возникнуть сложности, если популярность MapReduce/Hadoop будет расти.

И не только потому, что Oracle уже очень долгое время остается лидером рынка реляционных СУБД, но и потому, что ее база данных печально известна плохой масштабируемостью. А именно масштабируемость — одно из главных достоинств MapReduce/Hadoop.

Старший менеджер Oracle по продуктам Жан-Пьер Дейкс подчеркнул, что параллельная обработка больших наборов данных возможна с помощью Oracle Database при использовании функций, впервые предложенных в Oracle 9i еще в 2001 году.

«Разработка программного обеспечения MapReduce близится к концу... SQL также будет использоваться для массовой параллельной обработки. В конце концов шумиха закончится, и тогда станет понятно, с каким решением работать удобнее всего», — заметил Дейкс.


MapReduce против традиционных СУБД

MapReduce служит для поддержки параллельных вычислений, выполняемых кластерными системами над петабайтными массивами данных. Каркас состоит из функций двух типов, Map и Reduce, известных в функциональном программировании. Основная идея MapReduce достаточно проста.

На кластере работает не одна, как это бывает обычно, программа, а множество экземпляров Map и Reduce, плюс к тому есть объединяющий их каркас. Программа Map читает набор данных из входного файла, выполняет нужную фильтрацию и преобразования, а затем выдает набор выходных записей, состоящих из данных и приписанных им ключей. Каждая из программ Map работает независимо от других на своем узле в кластере. Ее задача состоит в умении работать с большими объемами, извлекать из этих данных то, что нам нужно обработать, «перетасовать» и отсортировать. У Reduce задача обратная — объединить, просуммировать, отфильтровать или изменить и записать результаты.

Надо заметить, что MapReduce не имеет ничего общего с базами данных, поэтому любые попытки сравнивать подход MapReduce с реляционными СУБД ошибочны. При работе с большими объемами данных MapReduce обходится дешевле и имеет большую масштабируемость, что доказано практикой работы Google. Кроме того, MapReduce обеспечивает автоматическое распараллеливание, балансировку нагрузки, оптимизацию загрузки сети и дисков. И еще одно важное преимущество, MapReduce имеет естественную отказоустойчивость, он позволяет построить надежную систему из ненадежных компонентов, что объясняет возможность работы Google на сотнях тысяч примитивных серверов.

Идеи MapReduce вдохновили представителей сообщества Open Source к созданию аналогов. Один из них — каркас Apache Hadoop, также позволяющий работать с петабайтными объемами данных на кластерах. Сегодня Hadoop активно используется в машинах Web-поиска и в системах контекстной рекламы. Hadoop изучается в университетских курсах по программированию распределенных систем.

Еще одно наследие MapReduce — свободно распространяемая, ориентированная на работу с документами СУБД Apache CouchDB. Ее основное отличие — в возможностях масштабирования. CouchDB хорошо адаптирована к многоядерным и многосерверным средам, что обеспечено не только использованием функций Map и Reduce, но и тем, что она написана на Erlang, функциональном языке программирования, позволяющем писать отказоустойчивые приложения для разного рода распределенных систем.

Адаптированная в приложении к Amazon Machine Image, CouchDB называется ElasticDB. На том же языке Erlang написана и аналогичная CouchDB система управления базами данных Amazon SimpleDB, которая используется в Amazon Elastic Compute Cloud (EC2) и Amazon S3. Для работы с распределенными системами хранения данных предназначен инструментарий Hypertable, имеющий преимущество при обработке больших объемов в режиме реального времени на кластерных конфигурациях. Технология Hypertable создана по мотивам технологии BigTable, разработанной Google с использованием файловой системы Google File System. Также по мотивам BigTable создана «колоночно-ориентированная» СУБД Hbase.

— Из статьи Леонида Черняка
«Вычисления с акцентом на данные»
(«Открытые системы», № 8, 2008)