Hadoop версии 3.0 - что нового?

Опубликовано: 18 Февраля, 2022

Hadoop - это фреймворк, написанный на Java, используемый для решения проблем с большими данными. Первоначальная версия Hadoop выпущена в апреле 2006 года. Сообщество Apache внесло много изменений со дня выхода первого выпуска Hadoop на рынок. Путешествие по Hadoop началось в 2005 году Дугом Каттингом и Майком Кафареллой. Причина разработки Hadoop - поддержка распространения проекта Nutch Search Engine .

Hadoop побеждает суперкомпьютер в 2008 году и становится самой быстрой системой из когда-либо созданных людьми для сортировки терабайт хранимых данных. Hadoop прошел долгий путь и внес много изменений по сравнению с предыдущей версией, например Hadoop 2.x. В этой статье мы собираемся обсудить изменения, внесенные Apache в Hadoop версии 3.x, чтобы сделать его более эффективным и быстрым.

Что нового в Hadoop 3.0?

1. JDK 8.0 - это минимальная версия JAVA, поддерживаемая Hadoop 3.x

Поскольку Oracle прекратила использование JDK 7 в 2015 году, для использования Hadoop 3 пользователям необходимо обновить свою версию Java до JDK 8 или выше, чтобы скомпилировать и запустить все файлы Hadoop. Версия JDK ниже 8 больше не поддерживается для использования Hadoop 3.

2. Поддерживается кодирование стирания

Кодирование стирания используется для восстановления данных при выходе из строя жесткого диска компьютера. Это высокоуровневая технология RAID (избыточный массив независимых дисков), которую многие ИТ-компании используют для восстановления своих данных. Файловая система Hadoop HDFS, то есть распределенная файловая система Hadoop, использует кодирование Erasure для обеспечения отказоустойчивости в кластере Hadoop. Поскольку мы используем обычное оборудование для построения нашего кластера Hadoop, отказ узла является нормальным явлением. Hadoop 2 использует механизм репликации для обеспечения такой же отказоустойчивости, как и при кодировании Erasure в Hadoop 3.

В репликах данных Hadoop 2 создаются блоки, которые затем сохраняются на разных узлах кластера Hadoop. Кодирование со стиранием занимает меньше или половину хранилища, чем при репликации в Hadoop 2, чтобы обеспечить такой же уровень отказоустойчивости. С увеличением объема данных в отрасли разработчики могут сэкономить большой объем хранилища с помощью кодирования со стиранием. Кодирование со стиранием сводит к минимуму потребность в жестком диске и повышает отказоустойчивость на 50% при наличии аналогичных ресурсов.

3. Поддерживается более двух именных узлов

Предыдущая версия Hadoop поддерживает один активный NameNode и один резервный NameNode. В последней версии Hadoop, то есть Hadoop 3.x, репликация блока данных выполняется между тремя узлами журнала (JN). Благодаря этому архитектура Hadoop 3.x более способна обеспечивать отказоустойчивость, чем ее предыдущая версия. При проблемах с большими данными, когда требуется высокая отказоустойчивость, Hadoop 3.x очень полезен в этой ситуации. В этом Hadoop пользователи 3.x могут управлять количеством резервных узлов в соответствии с требованиями, поскольку предоставляется возможность использования нескольких резервных узлов.

Например, разработчики теперь могут легко настроить три NameNodes и Five JournalNodes, так что наш кластер Hadoop способен обрабатывать два узла, а не один.

4. Переписывание сценария оболочки.

Файловая система Hadoop использует различные команды типа оболочки, которые напрямую взаимодействуют с HDFS и другими файловыми системами, которые поддерживает Hadoop, например, WebHDFS, Local FS, S3 FS и т. Д. Оболочка управляет множеством функций Hadoop. Сценарий оболочки, использованный в последней версии Hadoop, то есть Hadoop 3.x, имеет исправленное множество ошибок. Сценарии оболочки Hadoop 3.x также предоставляют возможность перезаписи сценария оболочки.

5. Timeline Service v.2 для YARN

Служба YARN Timeline хранит и извлекает информацию о кандидате (информация может быть текущей или исторической). Сервис Timeline v.2 был очень важен для повышения надежности и масштабируемости нашего Hadoop. Удобство использования системы повышается с помощью потоков и агрегации. В Hadoop 1.x с сервисом TimeLine пользователи v.1 могут создать только один экземпляр архитектуры чтения / записи и хранения, который нельзя масштабировать дальше.

Hadoop 2.x использует архитектуру распределенной записи, в которой операции чтения и записи данных разделены. Здесь распределенные сборщики предоставляются для каждого приложения YARN (еще один посредник ресурсов). Служба временной шкалы v.2 использует HBase для хранения, который можно масштабировать до огромного размера, а также обеспечивает хорошее время отклика для операций чтения и записи.

Информация, которую хранит Timeline service v.2, может быть двух основных типов:

A. Общая информация о заполненном заявлении

  • информация о пользователе
  • имя очереди
  • количество попыток, сделанных на одно приложение
  • информация о контейнере, которая запускается для каждой попытки в приложении

Б. Информация по фреймворку о запущенном и завершенном приложении

  • количество задач Map и Reduce
  • счетчики
  • информация, транслируемая разработчиком для TimeLine Server с помощью клиента Timeline.

6. Поддержка коннектора файловой системы

Эта новая версия Hadoop 3.x теперь поддерживает Azure Data Lake и систему хранения объектов Aliyun, которые являются еще одним резервным вариантом для файловой системы, совместимой с Hadoop.

7. Изменено несколько портов обслуживания по умолчанию.

В предыдущей версии Hadoop порт нескольких служб для Hadoop находится в диапазоне временных портов Linux (32768-61000) . В такой конфигурации из-за конфликтов, возникающих в каком-либо другом приложении, иногда служба не может привязаться к портам. Поэтому для решения этой проблемы Hadoop 3.x переместил конфликтные порты из диапазона временных портов Linux, и им были назначены новые порты, как показано ниже.

 // Новый назначенный порт
Порты Namenode: 50470 -> 9871, 50070 -> 9870, 8020 -> 9820
Порты Datanode: 50020-> 9867,50010 -> 9866, 50475 -> 9865, 50075 -> 9864
Вторичные порты NN: 50091 -> 9869, 50090 -> 9868  

8. Внутри датанодный балансир.

Узлы данных используются в кластере Hadoop для хранения. DataNodes обрабатывает несколько дисков одновременно. Этот Диск заполнялся равномерно во время операций записи. Добавление или удаление диска может вызвать значительный перекос в DataNode. Существующий HDFS-BALANCER не может справиться с этим значительным перекосом, который касается перекоса между DN, а не внутри него. Последняя функция балансировки внутри DataNode может управлять этой ситуацией, которая вызывается с помощью интерфейса командной строки балансировщика диска HDFS.

9. Затененные клиентские банки

Новые Hadoop-client-API и Hadoop-client-runtime доступны в Hadoop 3.x, который предоставляет зависимости Hadoop в одном пакете или одном файле jar. В Hadoop 3.x Hadoop –client-API имеет область времени компиляции, а Hadoop-client-runtime имеет область времени выполнения. Оба они содержат сторонние зависимости, предоставляемые Hadoop-client. Теперь разработчики могут легко объединить все зависимости в один файл jar и легко протестировать файлы jar на наличие конфликтов версий. таким образом можно легко удалить зависимости Hadoop от пути к классам приложения.

10. Управление кучей задач и демонами

В Hadoop версии 3.x мы можем легко настроить размер кучи демона Hadoop с помощью некоторых недавно добавленных способов. С помощью размера памяти хоста возможна автонастройка. Вместо HADOOP_HEAPSIZE разработчики могут использовать переменные HEAP_MAX_SIZE и HEAP_MIN_SIZE. Внутренняя переменная JAVA_HEAP_SIZE также удалена в последней версии Hadoop 3.x. Также удаляются размеры кучи по умолчанию, которые используются для автонастройки JVM (виртуальной машиной Java). Если вы хотите использовать старое значение по умолчанию, включите его, настроив HADOOP_HEAPSIZE_MAX в файле Hadoop-env.sh.