---
# System prepended metadata

title: Распределенная файловая система HDFS. Лекция 3

---

# Распределенная файловая система HDFS. Лекция 3

**Файловая система** (далее ФС) - порядок, определяющий способ организации, хранения и именования данных на носителях информации.

Конкретная файловая система определяет размер имени файлов и каталогов, максимальный возможный размер файла и раздела, набор атрибутов файла.

Некоторые ФС имеют сервисные возможности: разграничение доступа, шифрование файлов.

**Распределенная ФС** - компонент, использующийся для упрощения доступа и управления файлами, физически распределеннымипо сети.

При её использовании файлы, распределенные по серверам, представляются находящимися в одном месте.

## Серверные роли HDFS

### Name node

✓ управляет пространством имен ФС
✓ поддерживает дерево ФС и метаданные для всех файлов и каталогов в дереве
✓ не хранит местоположение блоков постоянно, эта информация подтягивается из Data node при запуске системы

### Data node

✓ хранит блоки файлов
✓ таких узлов в кластере множество
✓ регулярно отправляет Name node свой статус и информацию о блоках

### Secondary name node

✓ объединяет образы пространства имен с журналом изменений
✓ для объединения требует много мощности, поэтому выполняется на отдельной машине
✓ хранит копию объединения на случай ручного восстановления

## Запись данных в HDFS

![](https://i.imgur.com/7YZQNCH.png)

1. Клиент разрезает файл на цепочки блокового размера (128 Мб).
2. Клиент соединяется с NameNode и запрашивает операцию записи, присылая количество блоков и требуемый уровень репликации.
3. NameNode отвечает цепочкой из DataNode.
4. Клиент соединяется с первым узлом из цепочки (если не получилось с первым, то со вторым и т. д. Если не получилось совсем — откат). Клиент делает запись первого блока на первый узел, первый узел — на второй и т. д. Если клиент сумеет записать успешно блок хотя бы на один узел (репликация по типу «eventual»), в дальнейшем NameNode обязуется компенсировать и достичь желаемого уровня репликации.
5. По завершении записи в обратном порядке (4 -> 3, 3 -> 2, 2 -> 1, 1 -> клиенту) присылаются сообщения об успешной записи.
6. Как только клиент получит подтверждение успешной записи блока, он оповещает NameNode о записи блока, затем получает цепочку DataNode для записи второго блока и т.д.

## Свойства HDFS

1. **Отказоустойчивость**

    ✓ HDFS – система, работающая с большим количеством оборудования, а значит, шанс     того, что случится какой-либо сбой достаточно высок, и это нормально.
    ✓ Компоненты HDFS нацелены на своевременное отслеживание этих сбоев и быстрое       восстановление после них.
    
2. **Потоковый доступ к данным**
    
    ✓ Приложения, запускаемые на HDFS требуют потокового доступа к своим данным. Это не обычные приложения для общего пользования, HDFS предназначена скорее для пакетной обработки, нежели для интерактивного взаимодействия с конкретным пользователем.
    ✓ HDFS оптимизирована для обеспечения высокой пропускной способности данных за счет возможных задержек. 
    ✓ Приложения, которым требуется доступ к данным с малой задержкой в диапазоне десятков миллисекунд, не будут хорошо работать с HDFS.
    
3. **Работа с большими объёмами данных**

    ✓ HDFS предназначена для работы с огромными объёмами данных (терабайты и петабайты).

4. **Простая модель когерентности**

    ✓ После создания файла он виден в пространстве имен файловой системы.
    ✓ После того, как объем записанных данных достигнет размера блока, первый блок станет видимым новым читателям.
    ✓ Файл, который был создан, записан и закрыт, не нужно изменять, кроме как для добавления и удаления части данных (append и truncate).