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

HDFS

HDFS (Hadoop Distributed File System) — это распределённая файловая система, предназначенная для хранения больших объёмов данных (от терабайтов до петабайтов) на кластерах из стандартных серверов. HDFS является одним из основных компонентов экосистемы Apache Hadoop и обеспечивает отказоустойчивое хранение данных за счёт репликации и потоковую модель доступа (запись один раз, чтение много раз). Разработана компанией Yahoo! на основе идей, заложенных в файловых системах Google File System (GFS).

История

Разработка HDFS началась в 2005 году в рамках проекта Apache Hadoop, созданного Дагом Каттингом и Майком Каффареллой. Первоначально Hadoop создавался для поддержки поискового движка Nutch, но вскоре стало ясно, что распределённая файловая система может использоваться как самостоятельный продукт. В 2006 году HDFS была выделена в отдельный подпроект Hadoop. В 2008 году Yahoo! запустила крупнейший на тот момент кластер Hadoop из 4000 узлов, что подтвердило масштабируемость HDFS. С тех пор HDFS стала стандартом де-факто для хранения больших данных в корпоративных и научных средах.

Архитектура

HDFS построена по архитектуре «главный-подчинённый» (master-slave). Кластер состоит из двух типов узлов:

NameNode (главный узел)

NameNode управляет метаданными файловой системы: иерархией директорий, информацией о файлах, блоках и их расположении на DataNode. Он хранит образ файловой системы (FSImage) и журнал операций (EditLog) на локальном диске. NameNode не хранит сами данные, а только указатели на них. Выход из строя NameNode приводит к недоступности всей файловой системы, поэтому в современных реализациях используется резервирование (Standby NameNode) с помощью ZooKeeper.

DataNode (рабочие узлы)

DataNode хранят фактические данные в виде блоков фиксированного размера (по умолчанию 128 МБ). Каждый блок реплицируется на несколько DataNode (обычно 3) для обеспечения отказоустойчивости. DataNode периодически отправляют NameNode отчёты о состоянии хранимых блоков (heartbeat и blockreport). При сбое DataNode NameNode инициирует создание новых реплик на других узлах.

Принципы работы

Разделение на блоки

Любой файл в HDFS разбивается на блоки одинакового размера (кроме последнего блока, который может быть меньше). Блоки распределяются по DataNode таким образом, чтобы обеспечить равномерную загрузку дисков и сети. Размер блока выбирается большим (128 МБ или 256 МБ) для снижения накладных расходов на метаданные и оптимизации потокового чтения.

Репликация

Каждый блок хранится в нескольких копиях (по умолчанию 3). Реплики размещаются на разных стойках (rack-aware placement) для защиты от отказа целой стойки. Стратегия размещения: первая реплика — на узле, где выполняется запись (если это возможно); вторая — на узле в другой стойке; третья — на другом узле в той же стойке, что и вторая. При потере реплики NameNode автоматически создаёт новую.

Потоковый доступ

HDFS оптимизирована для последовательного чтения больших объёмов данных, а не для произвольного доступа к отдельным записям. Типичные сценарии: однократная запись (write-once) и многократное чтение (read-many). Изменение файлов после записи не поддерживается — файлы можно только удалять или перезаписывать целиком. Для обновления данных используются транзакционные системы поверх HDFS (например, HBase).

Преимущества и недостатки

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

Недостатки

Применение

HDFS используется в качестве основного хранилища данных в экосистеме Hadoop. Она служит базой для:

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

С развитием облачных технологий и появлением объектных хранилищ (Amazon S3, Google Cloud Storage, Yandex Object Storage) HDFS частично вытесняется из облачных сред, так как объектные хранилища обеспечивают аналогичную отказоустойчивость без необходимости управления кластером. Однако в локальных (on-premise) дата-центрах HDFS остаётся популярным решением. Существуют также гибридные архитектуры, где HDFS используется для кэширования данных из облачного хранилища.

Современные версии HDFS (начиная с Hadoop 3.x) поддерживают:

Интересные факты

Источники

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

На главную BFOmetr →