Определение и задачи HDFS
Устройство HDFS
Основные компоненты
Принципы работы
Преимущества использования
Ограничения
Примеры использования HDFS
Определение и задачи HDFS
Чтобы работать с массивными датасетами, хранимыми в кластерах компьютера, была разработана специальная распределенная файловая система. Она получила название Hadoop Distributed File System, или сокращенно HDFS. Эта система была создана для работы с файлами большого объема, распределяемыми по нескольким узлам для отказоустойчивости в сочетании с высокой производительностью.
Система распространена в приложениях с обработкой big data, таких как:
- машинное обучение,
- аналитика big data,
- хранилище больших файлов.
Устройство HDFS
Система использует архитектуру master-slave, состоящую из нескольких частей.
- NameNode (мастер-узел):
- единственный узел в кластере, управляющий метаданными файловой системы в целом, а также блоками данных;
- отвечает за создание/удаление каталогов, управление доступом, открытие/закрытие отдельных файлов, их сопоставление с блоками;
- информирует о том, как расположены в системе сами блоки.
- Secondary NameNode:
- отдельный сервер, который периодически создает резервную копию метаданных;
- позволяет быстро восстановить мастер-узел при любых системных сбоях.
- DataNode (подчиненные узлы):
- множество серверов в кластере, отвечающих за управление отдельными блоками и их хранение;
- выполняют команды от NameNode по созданию, удалению, репликации отдельных блоков;
- регулярно отправляют NameNode отчеты о своем состоянии;
- обрабатывают запросы клиентов на чтение и запись нужной информации.
- Клиенты:
- приложения или пользователи, взаимодействующие с системой посредством API-интерфейса;
- имеют право создавать, удалять, записывать, читать, переименовывать, перемещать файлы или каталоги;
- имеют право указывать размер блока, количество реплик файлов.
Компоненты HDFS взаимодействуют друг с другом по протоколам, основанным на TCP/IP.
Основные компоненты
Перечислим, какие еще компоненты входят в состав HDFS:
- Блоки данных. Все данные в системе делятся на блоки по 128 МБ каждый. Этот размер блока оптимизирован для производительности и масштабируемости HDFS. Блоки хранятся на узлах DataNode.
- Репликация. Чтобы поддерживать устойчивость системы, блоки данных реплицируются на несколько узлов DataNode каждый (обычно на три). Этот механизм гарантирует доступность всей нужной информации в системе, даже если какие-то узлы внезапно выйдут из строя.
- Фактор репликации. Администраторы могут указать фактор репликации для каждого файла или каталога, определяя, сколько реплик каждого блока должно храниться в системе. Фактор репликации можно настроить в соответствии с требованиями к производительности, доступности, стоимости. Более высокий уровень репликации обеспечивает более доступные данные, но требует большего пространства для хранения.
- Журнал транзакций (WAL). NameNode ведет журнал транзакций, в котором регистрируются все изменения метаданных. Это гарантирует, что система сможет восстановиться после сбоев. Журнал транзакций хранится на отдельном узле Secondary NameNode.
- HDFS Shell (она же hdfs dfs) — утилита командной строки, которая позволяет пользователям непосредственно взаимодействовать с файловой системой.
Принципы работы
В отличие от локальных файловых систем, HDFS не допускает модификацию файлов. Файлы создаются только один раз, и запись в них выполняется только одним процессом в одно время. HDFS ориентирована на хранение больших файлов (>10 ГБ), которые уже делятся на блоки.
Допустимые операции в данном случае — это:
- запись,
- чтение,
- репликация,
- удаление.
Преимущества использования
Перечислим достоинства HDFS:
- Масштабируемость. HDFS может легко масштабироваться до нескольких тысяч узлов, обеспечивая хранение огромных объемов данных с возможностью их обработки. Эта масштабируемость позволяет поддерживать требования к обработке поступающей информации в современных приложениях.
- Высокая пропускная способность. Система настроена на потоковую обработку больших файлов, обеспечивая высокую пропускную способность при их чтении и записи. Благодаря этому HDFS способна с высокой скоростью обрабатывать большие датасеты, что удобно для современных приложений с высокой интенсивностью передачи данных.
- Надежность. HDFS использует репликацию, чтобы одновременно обеспечить доступность и повышенную отказоустойчивость. При выходе даже нескольких узлов из строя данные остаются в доступе на других узлах. Это гарантирует, что они всегда будут доступны для приложений — даже в случае аппаратных сбоев.
- Стоимость. HDFS работает на недорогих аппаратных средствах, что делает ее выгодной для хранения массивов big data. Благодаря использованию недорогого оборудования HDFS делает работу с большими массивами доступной для организаций с разным бюджетом на IT-инфраструктуру.
- Интеграция с Hadoop. Сама по себе система HDFS входит в проект Hadoop от Apache и потому легко интегрируется с инструментами обработки данных, такими как MapReduce или Spark. Такая интеграция дает пользователям возможность без проблем создавать и запускать приложения для действий с big data. Ресурсы HDFS используются в этом случае для хранения массивов данных и управления ими.
- Простота использования. Решение предоставляет простой и удобный интерфейс для работы с big data, делая ее понятной для широкого круга пользователей. Этот простой интерфейс позволяет пользователям легко хранить, извлекать и управлять данными независимо от их технической подготовки.
- Файловая система, совместимая с POSIX. HDFS поддерживает файловую систему, совместимую с POSIX, что позволяет пользователям легко взаимодействовать с ней, используя знакомые команды и инструменты.
- Управление хранилищем на основе политик, позволяющее пользователям определять правила хранения для разных типов данных.
- Многопользовательский доступ, дающий возможность нескольким пользователям совместно управлять данными в централизованном хранилище.
Ограничения
HDFS, будучи мощной распределенной файловой системой, имеет определенные ограничения, которые следует учитывать при ее использовании.
- Низкая задержка чтения: решение оптимизировано под потоковую передачу больших файлов, однако при этом оно с немалой вероятностью имеет ограничение по задержке чтения при работе с небольшими файлами или каком-то случайном доступе к данным. Это ограничение может создавать проблемы для приложений, которым требуется быстрый и частый доступ к небольшим массивам.
- Ограниченная поддержка метаданных: в HDFS реализованы базовые функции метаданных, такие как имя файла, размер, временные метки. Для приложений, которым требуется более сложная поддержка метаданных, таких как пользовательские схемы или теги, может потребоваться реализация дополнительных решений.
- Сложность управления: кластеры могут быть сложными в управлении и обслуживании, особенно по мере их масштабирования до крупных размеров.
- Проблемы с безопасностью: HDFS имеет базовую реализацию безопасности, которая может быть недостаточной для обеспечения всесторонней защиты данных.
- Недостаточная поддержка обновления файлов: HDFS в основном предназначена для однократной записи и многократного чтения данных. Внесение изменений в существующие файлы может быть сложным и одновременно неэффективным, что может создавать затруднения для приложений, которым требуются частые обновления.
- Затраты на хранение: приложение требует значительных затрат на хранение, особенно при использовании репликации данных с целью большей отказоустойчивости.
Разработчики и администраторы должны учитывать эти ограничения, принимая соответствующие меры для оптимизации работы с HDFS в своей инфраструктуре.
Примеры использования HDFS
Экосистема Hadoop в целом и HDFS в частности являются популярными платформами для работы с big data. Большие массивы данных могут включать информацию о банковских транзакциях, посещаемых веб-сайтах, журналах веб-серверов, мобильных приложений, сообщениях в социальных сетях, электронных письмах клиентов, данных датчиков Интернета вещей (IoT) и многом другом. Эти данные часто не структурированы и хранятся в различных форматах, таких как текст, изображения, видео.
Ниже приведены примеры практического использования HDFS в разных сферах.
Розничная торговля:
- оптимизация объемов текущих запасов на товарных складах;
- повышение точности прогнозирования потребительского спроса;
- сокращение времени выполнения товарных заказов.
Финансы:
- моделирование и оценка рисков в управлении финансами;
- управление рисками при работе с портфелями клиентов.
Здравоохранение:
- обработка статистической информации для оценки заболеваемости населения;
- выявление мошенничества в страховой сфере.
Наука:
- генетика — анализ больших наборов геномных данных для выявления генетических вариаций, связанных с заболеваниями;
- астрономия — анализ информации, полученной с телескопов, для идентификации небесных тел и изучения их свойств;
- социология — обработка статистики из соцсетей и популярных веб-сервисов для определения тенденций, разработки моделей пользовательского поведения;
- климатология: работа с климатической статистикой для изучения влияния изменения климата на окружающую среду.
Программные продукты от Hadoop помогают организациям разного профиля подробно анализировать массивные датасеты для получения важной информации с дальнейшим принятием обоснованных решений.