Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1.docx
Скачиваний:
18
Добавлен:
12.02.2024
Размер:
1.43 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Математическая кибернетика и информационные технологии»

Дисциплина «Большие данные»

Лабораторная работа 1

Выполнил:

студент группы БСТ2104

Станишевский И.А.

Проверила: Тимофеева А. И.

Москва, 2023 г.

Содержание

Цель работы 3

1 Техническое задание 1 3

2 Ход выполнения Задания 1 3

3 Техническое задание 2 3

4 Ход работы задания 2 4

5 Работа с UI 13

Вывод: 15

Цель работы 3

1 Техническое задание 1 3

2 Ход выполнения Задания 1 3

3 Техническое задание 2 3

4 Ход работы задания 2 4

5 Работа с UI 13

Вывод: 15

Цель работы

Получить навыки работы с файловой системой HDFS.

  1. Техническое задание 1

Требуется выполнить вход на хост с использованием протокола SSH, используя команду в формате "ssh username@<IP-адрес>". При первой попытке входа на хост необходимо сменить пароль.

  1. Ход выполнения Задания 1

На рисунке 1 представлен вход на хост с использованием протокола SSH, и смена пароля входа.

Рисунок 1 – Вход на хост с использованием протокола SSH

  1. Техническое задание 2

  1. Создайте локальный тестовый файл, используя команду "echo "test text" >> test".

  2. Увеличьте размер файла, чтобы он превышал размер одного блока HDFS, используя команду "fallocate -lv 777M test".

  3. Создайте новую директорию в HDFS по пути "/data/test_dir".

  4. Положите файл "test" в HDFS по пути "/data/test_dir/test", используя команду "hdfs dfs -put test /data/test_dir/".

  5. Скопируйте директорию "/data/test_dir" в "/data/test_dir_1", используя команду "hdfs dfs -cp /data/test_dir /data/test_dir_1".

  6. Удалите файл "test" из директории "test_dir_1" без сохранения файла в корзине, используя команду "hdfs dfs -rm /data/test_dir_1/test".

  7. Просмотрите размер любой директории, используя команду "hdfs dfs -du -h /data/test_dir".

  8. Просмотрите, как файл "/data/test_dir/test" хранится на файловой системе с помощью команды "hdfs fsck /data/test_dir/test".

  9. Выполните команду "hdfs fsck /data/test_dir_1/test -blocks -files -locations".

  1. Ход работы задания 2

На рисунке 2 показано создание локального тестового файла, используя команду "echo 'test text' >> test" и проверка, с помощью команды "cat test".

Рисунок 2 – Создание тестового файла

На рисунке 3 показан процесс создания локального тестового файла "test" размером 777 мегабайт с использованием команды "fallocate -l 777M test", а также результат выполнения команды "du -m test", показывающий, что размер файла действительно составляет 777 мегабайт.

Рисунок 3 – Увеличение размера тестового файла до 777 МВ

На рисунке 4 показана команда "hdfs dfs -mkdir /data/test_dir_stanishevskii", используемая для создания новой директории внутри файловой системы HDFS, а также команда "hdfs dfs -ls /data", показывающая список папок, находящихся внутри папки "data" в HDFS, который теперь содержит нашу новую директорию "test_dir_ stanishevskii ".

Рисунок 4 – Создание директории "test_dir_ stanishevskii " в HDFS

На рисунке 5 показана команда "hdfs dfs -put test /data/test_dir_ stanishevskii ", используемая для копирование из локальной системы в HDFS локального файла "test" в директорию "test_dir_ stanishevskii " в файловой системе HDFS, а также команда "hdfs dfs -ls /data/test_dir_ stanishevskii ", показывающая список файлов, находящихся внутри директории "test_dir_ stanishevskii ".

Рисунок 5 – Загрузка файла "test" в директорию "test_dir_ stanishevskii " в HDFS

На рисунке 6 изображена команда "hdfs dfs -cp /data/test_dir_ stanishevskii /data/test_dir_ stanishevskii _1", с помощью которой происходит копирование директории "test_dir_ stanishevskii " с изменением имени на "test_dir_ stanishevskii _1". Команда "hdfs dfs -ls /data" используется для проверки успешного копирования директорий.

Рисунок 6 – Копирование директории "test_dir_stanishevskii" и создание "test_dir_stanishevskii_1" в HDFS

На рисунке 7 представлены команды "hdfs dfs -rm -skipTrash /data/test_dir_stanishevskii_1/test" для удаления файла "test" из директории "test_dir_stanishevskii_1", "-skipTrash" – команда указывает на то, что файлы должны быть удалены без отправки их в Корзину, а также команда "hdfs dfs -ls /data/test_dir_stanishevskii_1", показывающая содержимое директории после удаления файла и подтверждающая успешное выполнение операции.

Рисунок 7 – Удаления файла "test"

На рисунке 8 представлена команда "hdfs dfs -du -h /data/test_dir_stanishevskii", позволяющая определить размер директории "test_dir_stanishevskii" в HDFS.

Рисунок 8 – Проверка размера директории "test_dir_stanishevskii" в HDFS

На рисунке 9 показано выполнение проверки HDFS с использованием команды "hdfs fsck /data/test_dir/test -files -blocks -locations" и результат после успешной проверки.

Рисунок 9 - выполнение проверки HDFS

  1. Какой фактор репликации установлен на кластере? Ответ: 3

  2. Сколько блоков составляют файл? Ответ: 7

 При выполнении команды fsck появилась строчка

hdfs fsck /data/test_dir_stanishevskii_1/test -blocks -files –locations.

Команда fsck также использует WebHDFS API.

  • Выполним команду hdfs fsck /data/test_dir_stanishevskii_1/test -blocks -files –locations. "files" относится к файлам, хранящимся в HDFS. "blocks" являются минимальными единицами данных в HDFS. "locations" относятся к физическим узлам данных, на которых хранятся реплики блоков.

Рисунок 10 – Вывод информация о каждом блоке, из которого состоит файл

  1. BP-2089730104-192.168.0.3-1694299343161:blk_1073744149_3325 len=134217728 Live_repl=3 [DatanodeInfoWithStorage[192.168.0.8:50010,DS-6efcc178-736f-4d4d-9ae3-ae298b12f96e,DISK], DatanodeInfoWithStorage[192.168.0.6:50010,DS-1dc216c9-2a5f-488e-b078-213648c850b1,DISK], DatanodeInfoWithStorage[192.168.0.7:50010,DS-0fa1051e-e894-40f2-9702-25061bf076da,DISK]]

  1. Заполните таблицу для данных первого блока Вашего тестового файла

0.

Номер блока по порядку

BP-2089730104-192.168.0.3-1694299343161

Идентификатор block pull

blk_1073744149

Идентификатор блока

3325

Generation stamp. 

len=134217728

Объем блока

Live_repl=3

Количество живых реплик блока

DatanodeInfoWithStorage[192.168.0.8:50010

IP-адрес и порт, по которому доступен блок

DS-6efcc178-736f-4d4d-9ae3-ae298b12f96e

Data Storage ID идентификатор ноды (Если у ноды изменится hostname или IP-адрес, нода всё равно будет идентифицироваться внутри HDFS)

DISK

Способ хранения блока (Может также хранится в S3-хранилище)

Также с помощью команды можно узнать подробную информацию о состоянии конкретного блока данных (hdfs fsck -blockId blk_1073744149)

  1. Скопируйте результат работы команды для любого из блоков, составляющих ваш тестовый файл. Какие данные мы получили?

Рисунок 11 – Вывод информации о блоке

Выполним несколько команд через HDFS REST API. Так как на кластерах SDP Hadoop по умолчанию включена аутентификация kerberos, будем использовать соответсвтующий синтаксис команд:

  1. Выполним вывод информации о файле /data/test_dir/test:

curl -i --negotiate -u : http://node1.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_stanishevskii/test?op=GETFILESTATUS

  1. Какая информация выводится в результате работы команды?

Рисунок 12 – Вывод информации о файле /data/ test_dir_stanishevskii /test

HTTP/1.1 200 OK: Эта строка указывает на успешный ответ сервера с кодом состояния 200.

  • Date: Mon, 18 Sep 2023 19:07:56 GMT: Эта строка указывает на дату и время ответа сервера.

  • Cache-Control: no-cache: Этот заголовок указывает на то, что ответ не должен кэшироваться на клиентской стороне или промежуточных серверах.

  • Expires: Mon, 18 Sep 2023 19:07:56 GMT: Этот заголовок указывает на то, что ресурс будет считаться устаревшим после указанной даты и времени.

  • Pragma: no-cache: Этот заголовок указывает на то, что ответ не должен кэшироваться.

  • X-FRAME-OPTIONS: SAMEORIGIN: Этот заголовок указывает на опции фрейма X-Frame, определяющие, какие сайты имеют право встраивать данный контент внутри фрейма.

  • Content-Type: application/json: Этот заголовок указывает на тип содержимого ответа, который в данном случае является JSON-данными.

  • Transfer-Encoding: chunked: Этот заголовок указывает на способ передачи содержимого, в данном случае содержимое передается блоками переменной длины.

  • {"FileStatus":{...}}: Это фрагмент JSON-данных, содержащий информацию о файле. В нем указаны различные свойства файла, такие как:

  1. время доступа (accessTime),

  2. размер блока (blockSize), количество дочерних элементов (childrenNum),

  3. идентификатор файла (fileId),

  4. группа владельца файла (group),

  5. длина файла (length),

  6. время изменения файла (modificationTime),

  7. владелец файла (owner),

  8. суффикс пути файла (pathSuffix),

  9. разрешение доступа к файлу (permission), репликация файла (replication), хранилище файла (storagePolicy) и тип файла (type).

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

Рисунок 13 – Вывод первых 10 символов тестового файла,

curl -i --negotiate -u : http://node1.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_stanishevskii/test?op=OPEN&length=10

sber-node

Адрес ноды, на которой установлен клиент hdfs

50070

Порт подключения к REST API

--negotiate 

включаем SPNEGO в curl

/webhdfs/v1

Адрес Web API

/data/test_dir/test

Путь к нужному файлу в HDFS

op=

Производимое действие

length=

Желаемая длина считывания символов

  1. Почему мы не получили требуемых данных? Ответ: Не полный путь обращение к node.

  2. Проанализируйте ссылку раздела location из ответа сервера

  3. Для того, чтобы получить желаемые данные мы можем добавить в curl-запрос флаг -L (location). Эта опция заставит Curl повторить запрос для нового адреса, который мы получили ранее в Location.

Рисунок 14 – Вывод верной информации

"curl -i -L --negotiate -u : http://node5.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_stanishevskii/test?op=OPEN&length=10"

  1. Скопируйте файл /test из /data/test_dir в test_dir_1 и удалите его /data/test_dir_1/test с помощью curl-команды. Приложите скриншоты.

hdfs dfs -chmod -R 777 /data/test_dir_stanishevskii

hdfs dfs -chmod -R 777 /data/test_dir_stanishevskii_1

curl -i - -negotiate -u : -X PUT "http://node1.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_stanishevskii/test?op=RENAME&destination=/data/test_dir_stanishevskii_1/"

curl -i - -negotiate -u : -X DELETE "http://node1.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_stanishevskii_1/test?op=DELETE&recursive=false"

Рисунок 15 – Выполнение команд