Подтвердить что ты не робот

Как исправить поврежденные HDFS

Как кто-то исправляет HDFS, который поврежден? Я просмотрел веб-сайт Apache/Hadoop и сказал его fsck команда, которая не исправляет его. Надеюсь, кто-то, кто столкнулся с этой проблемой раньше, может сказать мне, как это исправить.

В отличие от традиционной утилиты fsck для собственных файловых систем, эта команда не исправляет обнаруженные ошибки. Обычно NameNode автоматически исправляет большинство восстанавливаемых сбоев.

Когда я запустил bin/hadoop fsck / -delete, он перечислил файлы, которые были повреждены или отсутствовали. Как я могу сделать это не коррумпированным? Это на тренировочной машине, поэтому я МОГУ СДЕЛАТЬ все, но когда мы поедем вживую, я не смогу "исправить" это, выбросив все, поэтому я пытаюсь понять это сейчас.

4b9b3361

Ответ 1

Вы можете использовать

  hdfs fsck /

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

  hdfs fsck / | egrep -v '^\.+$' | grep -v eplica

который игнорирует строки, содержащие только точки и строки, говорящие о репликации.

Как только вы обнаружите поврежденный файл

  hdfs fsck /path/to/corrupt/file -locations -blocks -files

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

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

Смыть полоскание и повторить до тех пор, пока все файлы не станут здоровыми или вы не выдохнете все альтернативы, которые ищут блоки.

Как только вы определите, что произошло, и вы не сможете восстановить больше блоков, просто используйте

  hdfs fs -rm /path/to/file/with/permanently/missing/blocks

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

Ответ 2

Если вы просто хотите вернуть HDFS в нормальное состояние и не беспокоитесь о данных, тогда

Здесь перечислены поврежденные блоки HDFS:

hdfs fsck -list-corruptfileblocks

Это приведет к удалению поврежденных блоков HDFS:

hdfs fsck / -delete

Обратите внимание, что вам может потребоваться использовать sudo -u hdfs, если вы не являетесь пользователем sudo (предполагается, что "hdfs" - это имя пользователя sudo)

Ответ 3

запустите все демоны и запустите команду как "hadoop namenode -recover -force", остановите демонов и начните снова. Подождите некоторое время, чтобы восстановить данные.