Введение в HDFS (1)

HDFS

Во-первых, концепция HDFS

HDFS — это файловая система для хранения файлов и управления ими через единое пространство имен (аналогично дереву каталогов локальной файловой системы). Он распределен, и каждый узел в кластере серверов имеет свои роли и обязанности.

1.1 Архитектура Hadoop

Состоит из 3-х модулей:

  • HDFS (распределенная файловая система Hadoop), распределенное хранилище HDFS
  • Распределенные вычисления MapReduce
  • Фреймворк планирования ресурсов Yarn

1.2 блочная концепция

Большое количество файлов можно распределять и хранить на разных серверах

Например, нижний клиент и файлы (1-N) — все это независимые коммерческие машины, и большое количество файлов распространяется с клиентской машины на каждую машину.HDFS.jpgОдин файл относительно большой и не может поместиться на одном диске, его можно разделить на множество небольших блоков и хранить на разных серверах, каждый сервер соединен через сеть, образуя единое целое.HDFS1.jpgПо умолчанию128MBразмер, который нужно разделить, каждый128MBфайл, называемый в HDFSкусок(block)

А значение по умолчанию можно настроить по параметрам, слишком маленькое или слишком большое ставить нехорошо. Если нарезанный файл слишком мал, этот фрагмент данных может быть распределен по нескольким машинам (время поиска медленное). Если разделенный файл слишком велик, время передачи данных увеличивается.

Пользователь выдал1GBЗапрос файла к клиенту HDFS, клиент HDFS будет основан на конфигурации (по умолчанию128MB), чтобы разделить этот файл, клиент HDFS разделит его на 8 файлов (также называемыхblock), а затем каждый сервер будет хранить эти разделенные файлы (блоки). ПредположениеКаждый сервер хранит две копии. Сервер, на котором хранятся эти данные, называется в HDFS.DataNode(узел данных), который включает в себя концепцию трех основных компонентов HDFS.

HDFS2.jpg

1.3 Резервное копирование HDFS

Файл делится на 8 блоков и хранится на разных DataNodes.Один из машинных DataNodes зависает, что приводит к недоступности данных.Поэтому hadoop также делает копию каждого блока данных для обеспечения достоверности данных.

HDFS3.jpg

1.4 Особенности HDFS:

  • Сохраните несколько копий и предоставьте механизм отказоустойчивости, копия будет утеряна или автоматически восстановлена ​​после простоя. По умолчанию сохраняются 3 копии.
  • работать на дешевых машинах.
  • Подходит для обработки больших данных. HDFS по умолчанию разделит файлы на блоки, 64M — это 1 блок (по умолчанию 128M). Затем сохраните пару ключ-значение блока в HDFS и сохраните карту пары ключ-значение в памяти. Если слишком много маленьких файлов, нагрузка на память будет большой.

1.5 Архитектура HDFS:

NameNode: главный узел. Управление сопоставлением блоков данных, обработка клиентских запросов на чтение и запись, настройка политик репликации, управление пространствами имен HDFS и т. д.

SecondaryNameNode: разделяет рабочую нагрузку namenode; является холодным резервным копированием NameNode; объединяет fsimage и fsedits, а затем отправляет их на namenode.

DataNode: РабУзел, ведомый, рабочий. Отвечает за хранение блока данных, отправленного клиентом; выполнение операций чтения и записи блока данных.

горячее резервное копирование:b — горячая резервная копия a на случай сбоя a. Тогда b немедленно выполняет работу вместо a.

холодное резервное копирование:b — это холодная резервная копия a на случай, если a выйдет из строя. Тогда b не может сразу заменить a на работу. Однако некоторая информация о a хранится в b, чтобы уменьшить потери после поломки a.

fsimage: файл образа метаданных (дерево каталогов файловой системы)

edits: Журнал операций с метаданными (запись операций модификации файловой системы)

Память Namenode хранится в =fsimage+edits

Во-вторых, три компонента HDFS

Большинство платформ больших данных на самом деле представляют собой архитектуры «ведущий-ведомый», то есть один главный и несколько подчиненных, HDFS — это NameNode, несколько DataNodes, MapReduce — JobTracker, несколько TaskTrackers, Yarn — ResourceManager, несколько NodeManagers и Spark — One. Мастер и несколько ведомых

HDFS4.jpg

2.1 Введение в NameNode

Платформы больших данных распределены, и каждая роль может работать на разных серверах.Когда требуется связь, требуется поддержка сети.Когда нашему клиенту нужно прочитать информацию о файле, мы должны знать, что наш этот файл разделен на сколько блоков, и на каком сервере хранится каждый блок.Такая информация, используемая для описания файла, называется информацией о метаданных (метаданные) файла, а метаданные хранятся в памяти NameNode.

2.2 Введение метаданных

Размер метаданных: файлы, блоки и каталоги занимают около 150 байт метаданных, так почему же HDFS подходит для хранения больших файлов, но не для маленьких? Вполне возможно, что для хранения большого файла необходимы только одни 150-байтовые метаданные. Хранение N нескольких небольших файлов будет сопровождать N файлов метаданных размером 150 байт, что очень неэкономично.

Информация метаданных сохраняется в виде файла образа пространства имен (далее именуемого fsimage) и журнала редактирования (далее именуемого журналом правок).

fsimage:元数据镜像文件,保存了文件系统目录树信息以及文件和块的对应关系 

edits log:日志文件,保存了文件的更改记录

Зачем метаданные нужно хранить в памяти NameNode?Ответ очень простой.Хранить в памяти значит быстро.Конечно будут проблемы.Если NameNode выйдет из строя, то память не сможет быть прочитана. время, чтобы предотвратить такого рода. Когда возникает ситуация, чтобы ускорить восстановление NameNode после сбоя, роль SecondaryNameNode разработана.

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

2.3 Введение SecondaryNameNode

Его основные функции заключаются в следующем

1.备份NameNode中的元数据信息
2.提高NameNode的重启速度
3.必要的时候可作为新的NameNode

Почему SecondaryNameNode может повысить скорость восстановления NameNode?

Когда кластер запускается, время начала t будет записано, и через некоторое время или после заполнения файла журнала изменений в NameNode будет запущена операция checkPoint.Эта точка знаний также будет существовать в Spark.Основная функция to Операция по резервному копированию важных данных

Пошаговое объяснение шагов операции удобно прочитать каждому

1.SecondaryNameNode будет извлекать журнал изменений и информацию fsimage через http get

2. Объедините журнал изменений и fsimage в SecondaryNameNode, чтобы создать новый файл с именем fsimage.ckpt.

3. После завершения слияния в SecondaryNameNode оно передается обратно в NameNode.

4. В это время велика вероятность того, что клиент еще читает и пишет в NameNode, а также будет сгенерирован новый лог, который будет помещен в отдельный файл edits new

5. Только что возвращенный файл fsimage.ckpt декомпозирован, исходный файл журнала fsimage и изменений, но журнал изменений в это время объединит файлы журнала в новых изменениях вместе в виде полного файла журнала изменений.

Почему SecondaryNameNode может повысить скорость перезапуска NameNode

Во-первых, выясните, как NameNode восстанавливается после зависания.

Сначала он прочитает файл изображения fsimage из памяти в память, а затем повторно выполнит все операции, записанные в журнале правок, и восстановит все метаданные перед возвратом в состояние перед выключением, этот процесс очень медленный.

Однако с помощью SecondaryNameNode большая часть информации метаданных может быть восстановлена ​​через предоставленный им файл fsimage.ckpt, а восстановление может быть выполнено напрямую путем выполнения новых операций, записанных в журнале правок и объединенных с новыми правками.

После того, как NameNode определит, что его нельзя перезапустить, SecondaryNameNode может предоставлять внешние услуги в качестве нового NameNode с помощью следующей команды.

hadoop-daemon.sh start namenode

Конечно, нетрудно обнаружить, что этот метод очень неизящный, потому что наш кластер обязательно будет иметь пустой период в период времени, когда NameNode перезапускается или SecondaryNameNode находится в верхней позиции.Нам может помочь метод Hadoop HA. решить эту проблему.

2.4 Введение в DataNode

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

Когда DataNode запустится, он перейдет к NameNode для регистрации, и они будут поддерживатьсердцебиение, если пульс DataNode не получен после порогового времени, HDFS считает, что DataNode не работает.

В дополнение к хранению самих данных блок также хранит часть метаданных (включая длину блока данных, контрольную сумму данных блока и метку времени). DataNode по-прежнемуобычныйСообщите всю текущую информацию о блоке в NameNode черезМетаданные могут проверить, находится ли текущий блок в нормальном состоянии..

3. Механизм HDFS

3.1 Механизм сердцебиения

img

Механизм пульса решает проблему связи между кластерами HDFS и является способом, с помощью которого NameNode дает указание DataNode выполнять операции.

1.master namenode启动之后,会开一个ipc server
2.slave DataNode启动,连接NameNode,每隔3s向NameNode发送一个心跳,并携带状态信息
3.NameNode通过对这个心跳的返回值来给DataNode传达任务指令

Роль механизма сердцебиения

1. Узел NameNode полностью управляет репликацией блоков данных.Он периодически получает сигналы сердцебиения и отчеты о состоянии блоков (blockReport) от каждого узла данных в кластере.Получение сигнала сердцебиения означает, что узел DataNode работает нормально, а отчет о состоянии блока содержит список DataNode. всех блоков данных на

2. DataNode регистрируется в NameNode, когда он запускается, и периодически сообщает blockReport в NameNode после его прохождения, посылает тактовые импульсы в NameNode каждые 3 секунды, и NameNode возвращает инструкции в DataNode, такие как копирование блока данных в другой компьютер или удаление определенного. Когда DataNode не отправляет пульс на NameNode более 10 минут, NameNode определяет, что DataNode недоступен, и операции чтения и записи клиента не будут передаваться на DataNode.

3. При первом запуске кластера хауп он переходит в безопасный режим (99,99%), и используется механизм сердцебиения.Фактически, когда кластер только запускается, каждый DataNode отправляет blockReport в NameNode, а NameNode будет подсчитывать общее количество блоков, о которых они сообщили. , разделенное на общее количество, известное в начале, когда блок / общее количество

3.2 Балансировка нагрузки

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

триггерная команда

$ HADOOP_HOME/sbin/start-balancer.sh -t 5%

На самом деле 5 % — это разница в использовании только что упомянутого диска. Когда она превышает 5 %, срабатывает стратегия балансировки нагрузки.

Суммировать

1. HDFS — это распределенная файловая система, которая просто понимается как файловая система, состоящая из нескольких машин.

2. В hdfs есть три важных модуля: клиент обеспечивает унифицированный рабочий интерфейс с внешним миром, узел данных фактически хранит данные, а узел имен координирует данные и управляет ими, это типичная архитектура master-slave.

3. HDFS будет нарезать большие файлы, и каждый фрагмент будет хранить резервные копии, чтобы обеспечить высокую доступность данных и подходит для хранения больших данных.

4. NameNode реализует восстановление данных и высокую доступность через fsimage и editlog.

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

использованная литература:

блог woo woo woo.cn on.com/old V/afraid/3434…

nuggets.capable/post/684490…

nuggets.capable/post/684490…