Новое поколение Hadoop позволит обойтись без MapReduce и станет надёжнее
Организация Apache Foundation объявила о релизе Apache Hadoop 2.2.0 — первой общедоступной версии нового поколения фреймворка параллельной обработки данных. Главное отличие Hadoop 2 — это его универсальность. Теперь модель MapReduce, которая была основой Hadoop в прошлом, — лишь одна из множества. При необходимости её можно заменить на другие, лучше подходящие решаемой задаче.
За десять лет существования проект Hadoop стал одним из важнейших средств обработки «больших данных». Его используют сотни компаний, работающих в самых разных отраслях; такие корпорации, как Oracle, IBM или SAP, предлагают своим клиентам продукты, основанные на Hadoop. По данным EMC, он является самой популярной технологией Big Data в России.
Первоначально Hadoop представлял собой альтернативную реализацию модели MapReduce, которую изобрели в Google для обновления поискового индекса. Слова «Map» и «Reduce» намекают на одноимённые функции, которые имеются в функциональных языках программирования. Map применяет заданную функцию к каждому элементу множества. Reduce при помощи заданной функции «складывает» полученное на входе множество в единый результат.
Интересная особенность Map заключается в том, что каждый шаг обработки множества совершенно независим. Функция не видит всё множество целиком и не обладает информацией о результатах обработки других элементов. Это делает её идеальным кандидатом для параллельного исполнения. Поскольку процесс обработки одного элемента не влияет на процесс обработки другого, их можно поместить на разные компьютеры и запустить одновременно.
В MapReduce задача делится между серверами-работниками, каждый из которых обрабатывает отдельный элемент множества. Распределением и координацией работников занят главный сервер кластера — мастер. Когда исполнение Map завершено, мастер собирает промежуточные результаты у работников и затем комбинирует их в итоговый результат на стадии Reduce.
В прошлых версиях Hadoop роль мастера выполнял демон JobTracker, распределявший ресурсы между узлами кластера, а также планировавший и мониторивший выполнение вычислений. С одной стороны, такая реализация делала его самой уязвимой точкой всей системы. Если JobTracker «падает», то останавливается весь кластер. С другой стороны, модель вычислений, заложенная в JobTracker, подходила только для MapReduce.
Отказ от JobTracker и жёсткой привязки к MapReduce — главное отличие Hadoop 2. Из основной модели обработки данных MapReduce превратился в приложение
Среди прочего, это означает, что Hadoop теперь может использоваться не только для пакетной, но и для интерактивной обработки — всё зависит от используемого приложения. Кроме того, разные приложения YARN могут работать на одном и том же кластере.
Роль JobTracker поделили два других демона. Демону ResourceManager досталась обязанность распределение ресурсов между узлами кластера. Демоны ApplicationManager договариваются с ResourceManager о получении необходимых ресурсов, а затем взаимодействуют с демонами NodeManager, управляющими отдельными узлами, следя за выполнением задач. У каждого приложения YARN свой ApplicationManager, и именно на этом уровне реализованы особенности каждой модели обработки данных.
На фоне таких значительных перемен другие особенности новой версии Hadoop несколько меркнут, но они всё же есть. В пресс-релизе, в частности, сообщается о повышении уровня доступности распределённой файловой системы HDFS, возможности сохранения образов хранилища HDFS и доступа к данным по протоколу NFSv3. Кроме того, Hadoop 2 поддерживает Windows.