Открыть сервис

HDFS Federation

HDFS Federation — это архитектурное расширение файловой системы Hadoop Distributed File System (HDFS), позволяющее масштабировать хранилище за пределы возможностей одного NameNode за счёт введения нескольких независимых пространств имён (namespaces), каждое из которых обслуживается собственным NameNode. В отличие от классической HDFS, где один NameNode управляет всем метаданными файловой системы, HDFS Federation децентрализует управление метаданными, сохраняя единый слой хранения данных на DataNode.

История и предпосылки создания

Классическая HDFS, разработанная в рамках проекта Apache Hadoop, имела фундаментальное ограничение: единственный NameNode хранил всё дерево каталогов и отображение блоков на файлы в оперативной памяти. Это приводило к двум проблемам:

  1. Ограничение по объёму памяти. Размер метаданных рос пропорционально количеству файлов и блоков. Для крупных кластеров с миллиардами файлов память одного NameNode становилась узким местом.
  2. Отсутствие изоляции. Разные приложения или пользователи работали в общем пространстве имён, что затрудняло управление квотами и безопасностью.

HDFS Federation была представлена в Apache Hadoop 2.0 (2009–2012 годы) как одно из ключевых нововведений, наряду с HDFS High Availability. Целью было снятие ограничения на масштабируемость метаданных без изменения интерфейса взаимодействия с клиентами.

Архитектура и принципы работы

Компоненты

В HDFS Federation выделяются следующие роли узлов:

Механизм работы

Каждый NameNode хранит метаданные в своей оперативной памяти и на диске (fsimage и edits). DataNode хранят блоки на дисках, но при этом каждый блок помечен идентификатором Block Pool ID, что позволяет различать блоки разных пространств имён. DataNode отправляет периодические отчёты всем NameNode, указывая, какие блоки из каких Block Pool у него хранятся.

Клиент (например, MapReduce-задача или Spark-приложение) при обращении к файловой системе указывает путь, начинающийся с префикса, соответствующего определённому NameNode. Например, hdfs://namenode1.example.com:8020/user/data и hdfs://namenode2.example.com:8020/user/logs могут указывать на разные пространства имён, хотя физически блоки могут храниться на одних и тех же DataNode.

Отличия от HDFS High Availability

HDFS Federation не следует путать с HDFS High Availability (HA). HA решает проблему отказоустойчивости одного NameNode за счёт активного и резервного узлов, синхронизирующих метаданные. Federation же решает проблему масштабирования, добавляя несколько активных NameNode, каждый из которых управляет своей частью метаданных. Federation и HA могут использоваться совместно: каждое пространство имён может иметь собственную пару активный/резервный NameNode.

Классификация и варианты реализации

Полная Federation

Все NameNode полностью независимы: они не обмениваются метаданными и не знают о существовании друг друга. Клиент должен явно указывать, к какому NameNode обращаться. Такая схема применяется для полного разделения нагрузки между разными группами пользователей или приложений.

Federation с общим хранилищем

В некоторых реализациях (например, в дистрибутивах Cloudera или Hortonworks) допускается, что несколько NameNode могут использовать общее пространство имён (например, через монтирование одного раздела HDFS в другое). Однако это не является стандартной архитектурой Apache Hadoop и требует дополнительных инструментов (например, ViewFs — View File System).

ViewFs (View File System)

Для упрощения работы с несколькими пространствами имён в HDFS Federation используется клиентский уровень абстракции — ViewFs. Он позволяет создать единое виртуальное дерево каталогов, где разные части этого дерева отображаются на разные NameNode. Например, /user может быть смонтирован на NameNode1, а /logs — на NameNode2. Клиент видит единую файловую систему, но физически запросы направляются к разным NameNode. ViewFs не требует изменений на стороне серверов.

Преимущества

Недостатки и ограничения

Применение

HDFS Federation используется в крупных корпоративных и исследовательских кластерах, где количество файлов превышает десятки миллиардов, а объём метаданных — сотни гигабайт. Примеры сценариев:

Альтернативы и развитие

В современных версиях Apache Hadoop (3.x) наряду с Federation продолжает развиваться HDFS Router-Based Federation (RBF). RBF вводит слой маршрутизации (Router), который принимает запросы от клиентов и перенаправляет их к нужному NameNode на основе правил монтирования. Это упрощает конфигурацию клиентов и добавляет возможность динамической балансировки нагрузки между NameNode.

Также существуют альтернативные распределённые файловые системы, не имеющие ограничения одного NameNode: например, CephFS (использует кластерные метаданные), GlusterFS (децентрализованное управление) и Lustre (с распределёнными серверами метаданных). Однако HDFS Federation остаётся популярным решением в экосистеме Hadoop из-за обратной совместимости и интеграции с существующими инструментами.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →