Создайте точку восстановления перед изменением

Биг датаBeginner
Практиковаться сейчас

Введение

Общественная мастерская хранит расписание занятий по помещениям, адрес для связи с посетителями и примечание о доступе в общей папке HDFS. Прежде чем менять расписание, нужна точка восстановления, которая позволит увидеть утверждённые файлы даже после изменения текущей папки.

Сначала вы прочитаете исправные данные, создадите собственный снимок HDFS от имени обычного владельца, а затем внесёте два контролируемых изменения. Предполагается знакомство с путями HDFS, загрузкой файлов, каталогами и основными разрешениями владельца и группы. В этой работе рассматриваются снимки и пути к историческим данным. Используйте Terminal на всех этапах; данные не зависят от других лабораторных работ. Авторская оценка времени — 40 минут, включая чтение и исправление обычных ошибок.

Сохраните утверждённые файлы перед изменением

На этом шаге вы прочитаете рабочее расписание и создадите именованную точку восстановления. Начните в Terminal. Команда cd меняет локальный рабочий каталог этой оболочки; пути, начинающиеся с /user/labex/ в командах HDFS, относятся к HDFS, а не к локальному диску.

cd /home/labex/project

Прочитайте текущее расписание:

hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv

Поля, разделённые запятыми, обозначают помещение и занятие:

room,session
A,Printmaking
B,Bookbinding

В папке команды также находятся contacts.csv и notes.txt. Выведите её содержимое:

hdfs dfs -ls /user/labex/snapshot-workshop/team

Эти исправные общие файлы принадлежат labex, группа — bigdata. Подготовленный пользователь analyst входит в эту группу и может читать файлы, но не писать. Вы — обычный владелец, а не служебная учётная запись NameNode hdfs. Учебная среда использует простую аутентификацию и не демонстрирует защиту Kerberos.

Снимок — это доступное только для чтения историческое представление каталога на определённый именованный момент. Администратор разрешил создавать снимки только для этой папки курса. Настоящую точку восстановления вы создаёте сами. Операция -createSnapshot принимает путь к текущему каталогу, а затем имя снимка:

hdfs dfs -createSnapshot /user/labex/snapshot-workshop/team morning-approved

В ответе указан собственный путь HDFS, оканчивающийся на .snapshot/morning-approved. Специальный компонент .snapshot выбирает историю; это не обычный каталог резервных копий, созданный через -mkdir. Прочитайте историческое расписание:

hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv

Оно содержит те же два утверждённых занятия. Выведите все три исторических файла:

hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot/morning-approved

В снимок также вошли исходный контакт и примечание о доступе. Если команда сообщает No such file or directory, сравните написание пути с этим списком и повторите только неудавшееся чтение. Если -createSnapshot сообщает, что имя уже существует, изучите этот снимок, а не удаляйте и не создавайте его заново. Не запускайте настройку среды повторно: она отказывается перезаписывать существующую работу.

Теперь у вас есть настоящая точка восстановления до редактирования. Локально скачанная копия или обычная папка с тем же именем не создали бы эту собственную историю HDFS.

Сравните историю с более поздними изменениями

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

Файл дополнительного занятия мастерской подготовлен локально. Сначала прочитайте его:

cat /home/labex/project/incoming/late-session.csv

Он содержит помещение C и Paper Folding. Загрузите его в текущую папку команды. Это часть текущего расписания, которую необходимо сохранить при любом дальнейшем восстановлении:

hdfs dfs -put /home/labex/project/incoming/late-session.csv /user/labex/snapshot-workshop/team/late-session.csv

Сохраните нужную группу совместного доступа с помощью -chgrp. Режим файла 640 разрешает владельцу чтение и запись, группе — чтение, а остальным пользователям не даёт доступа к файлу:

hdfs dfs -chgrp bigdata /user/labex/snapshot-workshop/team/late-session.csv
hdfs dfs -chmod 640 /user/labex/snapshot-workshop/team/late-session.csv

Теперь изучите намеренно неверную замену:

cat /home/labex/project/incoming/schedule-draft.csv

Она содержит A,CANCELLED. Следующая загрузка намеренно перезаписывает только указанный текущий файл расписания. Параметр -f разрешает замену этого назначения; здесь он применяется только ради контролируемого изменения. На снимок это не влияет.

hdfs dfs -put -f /home/labex/project/incoming/schedule-draft.csv /user/labex/snapshot-workshop/team/schedule.csv

Вторая контролируемая ошибка удаляет только текущий файл контакта. Сначала проверьте точный путь:

hdfs dfs -ls /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -rm /user/labex/snapshot-workshop/team/contacts.csv

Не используйте подстановочный знак, рекурсивное удаление или корень папки команды. Прочитайте изменённое расписание, затем его историческую версию:

hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv

Текущий результат показывает отмену, а история по-прежнему содержит Printmaking и Bookbinding. Прочитайте исторический контакт с фактической учётной записью для совместного чтения. sudo -u analyst запускает только этот клиент от имени обычной тестовой учётной записи; абсолютный путь клиента выбирает подготовленный инструмент HDFS:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv

Адрес по-прежнему равен visitors@example.test, хотя текущего файла контакта уже нет. Посмотрите текущий список:

hdfs dfs -ls /user/labex/snapshot-workshop/team

Он содержит изменённое расписание, неизменённое примечание и новое занятие. Если предыдущая загрузка нового файла сообщила о существующем назначении, прочитайте имеющийся файл вместо удаления и расширения области загрузки. Если повторное удаление сообщает об отсутствии контакта, контролируемое удаление уже выполнено; изучите список и продолжайте.

Оставьте это конечное состояние без изменений. Следующая работа предоставляет собственную независимую повреждённую среду и обучает восстановлению. Снимки используют то же хранилище, что и HDFS: их блоки не являются независимыми резервными копиями и не защищают от потери всей системы хранения.

Резюме

Вы создали собственный снимок HDFS до редактирования и отличили защищённые исторические файлы от изменённой текущей папки. Позднее добавленное занятие существует только в текущем расписании, поэтому замена всей папки историей уничтожила бы полезную работу. Вы также прочитали историю от имени фактического пользователя совместного чтения analyst.