4.1 Основы Hadoop. HDFS Flashcards

1
Q

HDFS

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Архитектура HDFS (компоненты)

A

1) Управляющий узел, узел имен или сервер имен (NameNode)

2) Secondary NameNode — вторичный узел имен

3) Узел или сервер данных (DataNode, Node)

4) Клиент (client)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

NameNode

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Secondary NameNode

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

DataNode

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Клиент (client)

A

Пользователь или приложение, взаимодействующий через специальный интерфейс (API – Application Programming Interface) с распределенной файловой системой. При наличии достаточных прав, клиенту разрешены следующие операции с файлами и каталогами: создание, удаление, чтение, запись, переименование и перемещение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Репликация, replication factor

A

Создавая файл, клиент может явно указать размер блока файла (по умолчанию 64 Мб) и количество создаваемых реплик (replication factor). Репликация — это избыточность хранения информации, которая позволяет нам потерять одну или несколько о копий. По умолчанию все HDFS-блоки реплицируются 3 раза (replication factor - 3), если клиентом (пользователем или приложением) не задано другое значение коэффициента репликации. С целью повышения надежности для хранения 2-ой и 3-ей реплики выбираются те узлы данных, которые расположены в разных серверных стойках. Последующие реплики могут храниться на любых серверах.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

В каких случаях выполняется репликация данных в HDFS?

A
  • создание нового файла (операция записи);
  • обнаружение сервером имен отказа одного из узлов данных – если NameNode не получает от DataNode heartbeat-сообщений, он запускает механизм репликации;
  • повреждение существующих реплик;
  • увеличение количества реплик, присущих каждому блоку.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Процесс выполнения репликации?

A

Репликация данных выполняется следующим образом:

1) NameNode выбирает новые узлов данных для размещения реплик;
сервер имен выполняет балансировку размещения данных по узлам и составляет список узлов для репликации;

2) 1-я реплика размещается на первом узле из списка;

3) 2-я реплика копируется на другой узел в этой же серверной стойке;

4) 3-я реплика записывается на произвольный узел в другой серверной стойке;

5) остальные реплики размещаются произвольным способом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Проблема мелких файлов

A

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

Вариант 1. Размер файла 1 Гб, размер блока 1 Гб
Для описания метаинформации о файле в первом случае нам нужно иметь 3 объекта:
Файл — 1 шт.
Блок — 1 шт.
Массив, который хранит информацию о блоках этого файла — 1 шт.

Вариант 2. Размер файла 1 Гб, размер блока 1 Мб
Если мы уменьшим размер блока, во втором случае нам нужно уже иметь 1002 объекта:
Файл - 1 шт.
Блок - 1000 шт.
Массив, который хранит информацию о блоках этого файла - 1 шт.

Вариант 3. 1000 файлов по 1 Мб, размер блока 1 Мб
Теперь представим, что размер блока остался с прошлого примера, а файл мы разбили по частям. В таком случае нам нужно 3000 объектов:
Файл — 1000 шт.
Блок — 1000 шт.
Массив, который хранит информацию о блоках этого файла — 1000 шт.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Процесс чтения клиентом

A

Клиент HDFS через специальный интерфейс Distributed Filesystem запрашивает у NameNode какой-либо файл. NameNode проверяет существует ли этот файл, его права доступа и т.п. Далее если все проверки были успешны - выдает клиенту информацию о файле (где он находится, из каких блоков состоит). Потом клиент самостоятельно используя интерфейс FSData InputStream идет на каждую конкретную DataNode из выданного списка, которого ему вадала NameNode и выкачивает нужную ему информацию.

Важно отметить, что основной трафик идет между клиентом и конкретными DataNode, а не через NameNode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Процесс записи файла клиентом

A

1) Клиент инициирует запрос для записи файла к NameNode.

2) NameNode проверяет, существует ли файл и есть ли у клиента права для записи, и в случае успеха создает запись для файла.

3) Клиент делит файл на несколько пакетов в соответствии с размером блока и управляет ими в форме «очереди данных» и получает количество репликаций блока.

4) Запишите пакеты для всех репликаций в форме конвейера, сначала запишите в первый DataNode.После того, как DataNode сохранит пакеты, передайте их следующему DataNode в конвейере до последнего DataNode (конвейерная форма).

5) После успешного сохранения последнего DataNode он вернет подтверждение и передаст его клиенту в конвейере.

6) Если DataNode выходит из строя во время передачи, текущий конвейер будет остановлен, отказавший DataNode будет удален, а оставшиеся DataNode будут по-прежнему передаваться в форме конвейера.

7) После того, как клиент заканчивает запись данных, он вызывает метод close (), чтобы закрыть поток данных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Хранение данных NameNode (основные группы файлов, которые хранятся в NameNode)

A
  • VERSION: информация о версии HDFS
  • edits: журнал изменений
  • fsimage: контрольная точка метаданных
  • fstime: время создания контрольной точки
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Процесс обновления fsimage в NameNode

A

Secondary NameNode не является репликой NameNode. Состояние файловой системы хранится непосредственно в файле fsimage и в лог файле edits, содержащим последние изменения файловой системы (похоже на лог транзакций в мире РСУБД). Работа Secondary NameNode заключается в поддержании актуальности её собственного fsimage и периодическом мерже fsimage и edits — Secondary NameNode поддерживает размер edits в разумных пределах.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Основные команды CLI

A

Команда Пример
appendToFile hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
cat hdfs dfs -cat hdfs://nn1.example.com/file1
copyFromLocal hdfs dfs -copyFromLocal localfile /user/hadoop/data/
copyToLocal hdfs dfs -copyToLocal localfile /tmp/data/ localfile
cp hdfs dfs -cp [-f] [-p | -p[topax]] URI [URI …] <dest>
du hdfs dfs -du -s /tmp/test.data
expunge hdfs dfs -expunge
get hdfs dfs -get /user/hadoop/file localfile
getmerge hdfs dfs -getmerge <src> <localdst> [addnl]
ls hdfs dfs -ls /user/hadoop/file1
mkdir hdfs dfs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
mv hdfs dfs -mv /user/hadoop/file1 /user/hadoop/file2
put hdfs dfs -put localfile /user/hadoop/hadoopfile
rm hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI ...]
tail hdfs dfs -tail pathname
setrep hdfs dfs -setrep [-R] [-w] <numReplicas> <path></path></numReplicas></localdst></src></dest>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly