Обзор федерации 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 RBF лежат следующие компоненты.
Подкластеры HDFS
Федеративное хранилище HDFS состоит из двух или более подкластеров. Это обычные HDFS-кластеры, настроенные для совместной работы в качестве единого хранилища HDFS. В федерации HDFS каждый подкластер имеет собственное независимое пространство имен. Однако доступ к подкластерам обеспечивается через глобальное пространство имен, предоставляемое компонентом HDFS Router, который конвертирует HDFS-пути и перенаправляет запросы в соответствующий подкластер. Объединение подкластеров в федерацию осуществляется через пользовательский интерфейс ADCM.
HDFS Router
Данный компонент выступает в роли прокси, который перенаправляет запросы от HDFS-клиентов к нужным узлам NameNode в федерации.
На следующей схеме изображен рабочий процесс с использованием HDFS Router.
Основные этапы взаимодействия, представленные на схеме:
-
HDFS-клиент отправляет команду (например,
hdfs dfs -ls /foo/bar)компоненту HDFS Router. -
HDFS Router обращается к State store для идентификации подкластера и NameNode, ответственных за хранение запрашиваемых файлов.
-
HDFS Router перенаправляет запрос соответствующим узлам NameNode.
-
Метаданные о запрошенных файлах возвращаются HDFS-клиенту для дальнейшего чтения/записи.
-
Клиент 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. Процедура включает два этапа:
-
Откройте корневой кластер в ADCM.
-
Перейдите на страницу Services → HDFS → Primary configuration и активируйте раздел настроек Federation.
-
Сохраните конфигурацию кластера.
-
Перезапустите сервис HDFS в корневом кластере.
-
Откройте корневой кластер в ADCM.
-
Перейдите на страницу Import и импортируйте ADH-кластер(ы), как показано на рисунке.
Импорт кластера -
Сохраните настройки и перезапустите сервис HDFS.
-
Проверьте импорт. Для этого в корневом кластере откройте 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.