Обзор федерации HDFS на основе Router

Обзор

Федерация HDFS — это архитектурное решение, предназначенное для масштабирования HDFS-хранилища путем объединения нескольких кластеров HDFS в единую логическую файловую систему с единым пространством имен. Такой подход позволяет использовать несколько небольших HDFS-кластеров вместо одного большого. Это снижает нагрузку на каждый NameNode, обеспечивает более высокую производительность и упрощает обслуживание.

Вид HDFS-федерации, используемой в ADH, называется федерацией на основе маршрутизатора (Router-Based Federation, RBF) из-за ключевого компонента — HDFS Router, который направляет HDFS-запросы в соответствующий подкластер внутри федерации. В данной статье описаны основные компоненты RBF, рабочий процесс и концепции.

ПРИМЕЧАНИЕ
Для создания полноценного федеративного хранилища ADH HDFS-федерация используется совместно с YARN-федерацией.

Преимущества федерации HDFS

Использование федеративного хранилища HDFS дает следующие преимущества:

  • Более равномерное распределение нагрузки на NameNode. Известно, что узлы NameNode имеют ограничения по масштабируемости. В крупных кластерах (100+ хостов) NameNode становятся узким местом в плане производительности из-за огромного количества метаданных, inode, файловых блоков, сигналов от DataNode, RPC-вызовов и так далее. HDFS RBF позволяет поддерживать несколько небольших HDFS-кластеров вместо одного большого, что обеспечивает более равномерное распределение нагрузки.

  • Бесшовная масштабируемость. Федеративное хранилище HDFS можно масштабировать горизонтально без простоев. Процесс похож на монтирование дополнительного диска в файловую систему и не требует остановки системы.

  • Единая точка входа (глобальное пространство имен), что обеспечивает единое логическое представление данных.

  • Изоляция ошибок. Ошибки в одном кластере не влияют на работу других кластеров в рамках федерации (см. Особенности и ограничения).

Компоненты федерации HDFS

Ниже представлена высокоуровневая схема HDFS RBF.

Федерация HDFS на основе маршрутизатора
Федерация HDFS на основе маршрутизатора
Федерация HDFS на основе маршрутизатора
Федерация HDFS на основе маршрутизатора

В основе механизма HDFS RBF лежат следующие компоненты.

Подкластеры HDFS

Федеративное хранилище HDFS состоит из двух или более подкластеров. Это обычные HDFS-кластеры, настроенные для совместной работы в качестве единого хранилища HDFS. В федерации HDFS каждый подкластер имеет собственное независимое пространство имен. Однако доступ к подкластерам обеспечивается через глобальное пространство имен, предоставляемое компонентом HDFS Router, который конвертирует HDFS-пути и перенаправляет запросы в соответствующий подкластер. Объединение подкластеров в федерацию осуществляется через пользовательский интерфейс ADCM.

HDFS Router

Данный компонент выступает в роли прокси, который перенаправляет запросы от HDFS-клиентов к нужным узлам NameNode в федерации.

На следующей схеме изображен рабочий процесс с использованием HDFS Router.

Использование HDFS Router
Использование компонента HDFS Router
Использование HDFS Router
Использование компонента HDFS Router

Основные этапы взаимодействия, представленные на схеме:

  1. HDFS-клиент отправляет команду (например, hdfs dfs -ls /foo/bar) компоненту HDFS Router.

  2. HDFS Router обращается к State store для идентификации подкластера и NameNode, ответственных за хранение запрашиваемых файлов.

  3. HDFS Router перенаправляет запрос соответствующим узлам NameNode.

  4. Метаданные о запрошенных файлах возвращаются HDFS-клиенту для дальнейшего чтения/записи.

  5. Клиент HDFS напрямую обращается к нужным DataNode для чтения/записи данных.

РЕКОМЕНДАЦИЯ
Компоненты HDFS Router могут работать в режиме высокой доступности. Рекомендуется устанавливать два или более компонента HDFS Router в кластере ADH.

Компонент предоставляет веб-интерфейс с подробной информацией о состоянии и активности HDFS-федерации. URL по умолчанию: http://<hdfs-router-host>:50071.

Хранилище состояния

Хранилище состояния (State store) — это распределенное хранилище, в котором хранятся метаданные федерации, необходимые для корректной работы всей HDFS-федерации, например:

  • Таблица монтирования (Mount table). Хранит мэппинг глобальных путей HDFS и пространств имен HDFS-подкластеров. Компоненты HDFS Router обращаются к таблице монтирования, чтобы определить, какой именно подкластер должен обработать конкретную HDFS-команду.

  • Membership-таблица. Хранит информацию о всех узлах NameNode, зарегистрированных в федерации. Сообщает компонентам HDFS Router, на какой NameNode следует направить конкретный запрос.

Хранилище состояний поддерживает подключаемый бэкенд. В ADH в качестве бэкенда по умолчанию используется ZooKeeper.

Создание федерации HDFS

Настройка HDFS RBF осуществляется с помощью ADCM. Процедура включает два этапа:

Шаг 1. Включение федерации HDFS
  1. Откройте корневой кластер в ADCM.

  2. Перейдите на страницу Services → HDFS → Primary configuration и активируйте раздел настроек Federation.

  3. Сохраните конфигурацию кластера.

  4. Перезапустите сервис HDFS в корневом кластере.

Шаг 2. Импорт подкластеров в федерацию
  1. Откройте корневой кластер в ADCM.

  2. Перейдите на страницу Import и импортируйте ADH-кластер(ы), как показано на рисунке.

    Импорт кластера
    Импорт кластера
  3. Сохраните настройки и перезапустите сервис HDFS.

  4. Проверьте импорт. Для этого в корневом кластере откройте Primary configuration → Federation и проверьте настройки Import configuration и Federation configuration. В этих разделах должны появиться параметры импортируемых кластеров.

ПРИМЕЧАНИЕ
Чтобы импортировать HDFS-кластер, который не находится под управлением ADCM или управляется другим ADCM-сервером, используйте ручной импорт.

Корневой и импортируемые кластеры

Федеративное хранилище HDFS состоит из подкластеров двух типов:

  • Корневой кластер (root). Основной HDFS-кластер, который содержит компонент(ы) HDFS Router. HDFS Router получает запросы от HDFS-клиентов и направляет их другим подкластерам в федерации. Именно в корневом кластере активируется опция Federation в ADCM. Помимо маршрутизации вызовов корневой кластер также может хранить данные как обычный HDFS-кластер. HDFS-федерация содержит один корневой кластер.

  • Импортируемые кластеры (imported). Один или несколько ADH-кластеров, которые импортируются в корневой кластер и получают перенаправленные запросы от HDFS Router. После настройки таблицы монтирования содержимое импортируемого кластера отображается для HDFS-клиентов в виде обычной директории, смонтированной в корневой кластер.

Таким образом, процесс создания HDFS-федерации сводится к импорту одного или нескольких ADH-кластеров в корневой кластер.

Автоматический и ручной импорт кластеров

При создании HDFS-федерации существует два способа импорта кластеров в корневой:

  • Автоматический. ADH-кластеры можно импортировать с помощью функции импорта в ADCM. Данная опция доступна, если все кластеры управляются одним сервером ADCM.

  • Ручной. Вы можете вручную указать параметры импортируемых кластеров (адреса NameNode, пространства имен, RPC-эндпойнты и так далее). Это позволяет импортировать кластеры, управляемые другими экземплярами ADCM.

Квоты федерации

HDFS RBF поддерживает квоты для ограничения дискового пространства и количества объектов пространства имен, выделяемые клиентам HDFS в рамках федерации. Квоты устанавливаются на уровне записей таблицы монтирования и применяются во всех соответствующих подкластерах. С помощью квот администраторы могут контролировать потребление ресурсов в HDFS-подкластерах через единое глобальное пространство имен.

HDFS Router периодически собирает статистику использования квот из соответствующих подкластеров и сравнивает ее с настроенными лимитами квот. Если операция записи превышает квоту, HDFS Router отклоняет такую операцию, прежде чем переслать ее в целевой NameNode.

Особенности и ограничения

  • Каждый HDFS-файл в федерации, включая все реплики его блоков, хранится в одном подкластере (в пределах пула блоков этого подкластера). Выход из строя подкластера делает недоступными файлы этого подкластера для всей федерации.

  • При выходе из строя подкластера часть глобального пространства имен, соответствующая этому подкластеру, перестает быть доступной. При использовании точек монтирования с несколькими целевыми подкластерами (multi-destination mount) и политики RANDOM (файлы распределяются случайным образом по подкластерам) частично пострадают все релевантные файлы, распределенные по федерации.

  • Федерация HDFS не реализует локальность данных. Расположение новых файлов выбирается компонентом HDFS Router без учета расположения "писателя".

  • HDFS Router не создает директории — необходимые директории в подкластерах должны быть созданы вручную.

Больше информации о настройке HDFS-федерации доступно на странице HDFS Router-based Federation.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней