# Распределенная файловая система 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).