Организация Apache Foundation объявила о релизе Apache Hadoop 2.2.0 – первой общедоступной версии нового поколения фреймворка параллельной обработки данных. Главное отличие Hadoop 2 – его универсальность. Теперь модель MapReduce, которая была основой Hadoop в прошлом, – лишь одна из множества. При необходимости её можно заменить на другие, лучше подходящие решаемой задаче.

За десять лет существования проект Hadoop стал одним из важнейших средств обработки “больших данных”. Его используют сотни компаний, работающих в самых разных отраслях; такие корпорации, как Oracle, IBM или SAP, предлагают своим клиентам продукты, основанные на Hadoop. По данным EMC, он является самой популярной технологией Big Data в России.

Кластер Hadoop, использовавшийся в Yahoo.
Кластер Hadoop, использовавшийся в Yahoo.

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

Слова “Map” и “Reduce”, из которых состоит её название, намекают на одноимённые функции, которые имеются в функциональных языках программирования. Map применяет заданную функцию к каждому элементу множества. Reduce при помощи заданной функции комбинирует полученное на входе множество в единый результат.

Интересная особенность Map заключается в том, что каждый шаг обработки множества совершенно независим. Функция может обращаться лишь к одному элементу множества и не знает, чем закончилась обработка других. Это делает её идеальным кандидатом для параллельного исполнения. Поскольку процесс обработки одного элемента не влияет на процесс обработки другого, их можно поместить на разные компьютеры и запустить одновременно.

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

Hadoop 1
Hadoop 1

В прошлых версиях Hadoop роль мастера выполнял демон JobTracker, распределявший ресурсы между узлами кластера, а также планировавший и мониторивший выполнение вычислений. С одной стороны, такая реализация делала его самой уязвимой точкой всей системы. Если JobTracker “падает”, то останавливается весь кластер. С другой стороны, модель вычислений, заложенная в JobTracker, подходила только для MapReduce.

Отказ от JobTracker и жёсткой привязки к MapReduce – главное отличие Hadoop 2. Из основной модели обработки данных MapReduce превратилась в приложение YARN – более универсального и высокоуровневого средства параллелизации. Кроме неё, есть и другие приложения: например, Spark, обрабатывающий данные в оперативной памяти, Apache HAMA, Apache Giraph и Open MPI.

Среди прочего, это означает, что Hadoop теперь может использоваться не только для пакетной, но и для интерактивной обработки – всё зависит от используемого приложения. Кроме того, разные приложения YARN могут работать на одном и том же кластере.

Hadoop 2
Hadoop 2

Роль JobTracker поделили два других демона: ResourceManager и ApplicationManager. Демону ResourceManager досталась обязанность распределение ресурсов между узлами кластера. Демоны ApplicationManager договариваются с ResourceManager о получении необходимых ресурсов, а затем взаимодействуют с демонами NodeManager, управляющими отдельными узлами, следя за выполнением задач. У каждого приложения YARN свой ApplicationManager, и именно на этом уровне реализована специфика каждой модели обработки данных.

На фоне таких значительных перемен другие особенности новой версии Hadoop несколько меркнут, но они всё же есть. В пресс-релизе, в частности, сообщается о повышении уровня доступности распределённой файловой системы HDFS, возможности сохранения образов хранилища HDFS и доступа к данным по протоколу NFSv3. Кроме того, Hadoop 2 поддерживает Windows.