Hadoop 3 — мажорная версия фреймворка для разработки и выполнения распределенных программ.

Hadoop 3 вышел в 2017 году, а недавно он стал доступен на облачной платформе Mail.ru Cloud Solutions в виде PaaS-решения на базе дистрибутива Arenadata.

Для пользователей облачного Hadoop версий 1 и 2 расскажем о новых возможностях третьей и почему стоит перейти на нее.

Erasure Coding: уменьшение избыточности хранения

В Hadoop 2 для обеспечения отказоустойчивости используется репликация. Это значит, что все данные хранятся в избыточном состоянии. По умолчанию коэффициент репликации равен трем, то есть все данные хранятся в трех репликах: основные данные плюс две копии.

Например, файл весом 1 Гбайт хранится в четырех блоках по 256 Мбайт. Для каждого из этих блоков создается по две дополнительные копии, в результате все это занимает 3 Гбайт. Избыточность хранения составляет 200%.

Hadoop 3 использует другой подход — Erasure Coding. Это способ фрагментации данных, при котором создаются лишь несколько дополнительных блоков четности. Они хранят информацию о том, как восстановить остальные блоки в случае их недоступности. Подробнее о том, как это работает.

В этом же примере с подходом Erasure Coding будет использовано всего два дополнительных блока, и вместе данные будут занимать 1,5 Тбайт. Это 50% избыточности хранения.

Erasure Coding позволяет сократить объем хранимых данных с сохранением того же уровня отказоустойчивости

Поддержка более двух NameNodes: повышение отказоустойчивости

В Hadoop 2 может быть один активный и один резервный управляющий узел (NameNode). Это означает, что кластер может выдержать выход из строя только одного узла. Если из строя выйдут два узла, кластер будет недоступен.

Hadoop 3 может обеспечить более высокую отказоустойчивость — теперь он поддерживает несколько резервных NameNodes. Таким образом, кластер может выдержать выход из строя двух и более управляющих узлов.

YARN Federation: масштабирование до 100 000 узлов

Изначально YARN проектировался для масштабирования до 10 000 узлов. В новой версии Hadoop появился YARN Federation, который позволит масштабировать YARN на 40 000 или даже 100 000 узлов. Это пригодится высоконагруженным приложениям.

Новые типы ресурсов YARN: пользовательские исчисляемые ресурсы

Модель ресурсов YARN была обобщена для поддержки дополнительных исчисляемых типов ресурсов, помимо CPU и RAM. Например, администратор кластера может определить такие ресурсы, как графические процессоры, лицензии на ПО или локально подключенное хранилище.

Это позволяет планировать задачи в YARN в зависимости от доступности этих ресурсов. Например, при планировании задач можно учитывать количество доступных лицензий на ПО или свободное место на дисках.

YARN Timeline Service 2: масштабируемое backend-хранилище

Timeline Server отвечает за сбор и поиск информации о запущенных приложениях в кластере. Timeline Service 2.0 — это следующая крупная итерация Timeline Server после v.1. Версия v.2 решает две основные проблемы версий v.1:

  • Масштабируемость. Версия v.1 имеет один экземпляр устройства чтения/записи и хранилища и не может масштабироваться за пределы нескольких узлов. Версия 2 использует более масштабируемую распределенную архитектуру записи и масштабируемое backend-хранилище. YARN Timeline Service v.2 отделяет сбор данных от обслуживания.
  • Удобство использования. YARN Timeline Service v.2 поддерживает агрегирование информации на уровне потоков или логической группы приложений YARN.

Task heap management: автонастройка размера кучи (heap)

В Hadoop 3 представлены новые методы настройки размеров кучи. Теперь возможна автонастройка в зависимости от размера памяти хоста, а переменная HADOOP_HEAPSIZE устарела. Желаемый размер кучи больше не нужно указывать в конфигурации задачи и в качестве параметра Java.

Java 8

Hadoop 2 работает на Java Development Kit 7. Apache Hadoop 3 перешел на Java Development Kit 8. Помимо самого Hadoop 3, поддержка JDK 8 присутствует в его компонентах HBase 2.0, Hive 3.0 и Phoenix 3.0.