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

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

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

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

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

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

Практическая работа №1

Москва, 2024

Оглавление

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

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

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

4 Ход выполнения задания 2 4

5 Работа с UI 13

5 Вывод 17

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

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

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

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

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

Рисунок 1 – Вход на хост и смена пароля

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

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

  2. Увеличьте размер файла, чтобы он превышал размер одного блока HDFS, используя команду "fallocate –l 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".

4 Ход выполнения задания 2

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

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

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

Рисунок 3 – Увеличение размера файла

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

Рисунок 4 – Создание новой директории

Рисунок 5 – Список папок, находящихся внутри папки "data" в HDFS

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

Рисунок 6 – Копирование файла "test" в директорию "test_dir_smirnov" 

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

Рисунок 7 - Копирование директории "test_dir_smirnov" с изменением имени на "test_dir_smirnov_1"

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

Рисунок 8 - Удаление файла "test" из директории "test_dir_smirnov_1"

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

Рисунок 9 – Определение размера директории "test_dir_smirnov" в HDFS

На рисунке 10 показано выполнение проверки HDFS с использованием команды "hdfs fsck /data/test_dir_smirnov/test, для просмотра хранения файла на файловой системе.

Рисунок 10 – Хранение файла на файловой системе

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

Ответ: 3

  1. Сколько блоков составляют файл?

Ответ: 7

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

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

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

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

На рисунке 12 представлена информация о первом блоке.

Рисунок 12 – Информация о первом блоке

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

0.

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

BP-2089730104-192.168.0.3-1694299343161

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

blk_1074431084

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

690502

Generation stamp. 

len=134217728

Объем блока

Live_repl=3

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

DatanodeInfoWithStorage[192.168.0.6:50010

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

DS-1dc216c9-2a5f-488e-b078-213648c850b1

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

DISK

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

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

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

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

Выполним несколько команд через 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_smirnov/test?op=GETFILESTATUS

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

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

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

  • Date: Thu, 26 Sep 2024 16:56:31 GMT: Эта строка указывает на дату и время ответа сервера.

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

  • Expires: Thu, 26 Sep 2024 16:56:31 GMT: Этот заголовок указывает на то, что ресурс будет считаться устаревшим после указанной даты и времени.

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

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

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

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

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

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

  2. Размер блока (blockSize)

  3. Количество дочерних элементов (childrenNum),

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

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

  6. Длина файла (length),

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

  8. Владелец файла (owner),

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

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

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

Рисунок 15 – Попытка прочитать первые 10 символов тестового файла

sber-node

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

50070

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

--negotiate

включаем SPNEGO в curl

/webhdfs/v1

Адрес Web API

/data/test_dir_smirnov/test

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

op=

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

length=

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

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

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

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

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

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

-sh-4.2$ hdfs dfs -chmod -R 777 /data/test_dir_smirnov

-sh-4.2$ hdfs dfs -chmod -R 777 /data/test_dir_smirnov_1

-sh-4.2$ curl -i - -negotiate -u : -X PUT "http://node1.mtuci.cloud.ru:50070/webhdfs/v1/data/test_dir_smirnov/test?op=RENAME&destination=/data/test_dir_smirnov_1/"

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

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

Соседние файлы в предмете Большие данные