Вопрос или проблема
Ambari генерирует предупреждение NameNode Blocks Health: Всего блоков:[38252543], отсутствует блоков:[2]
. Нет дополнительной информации.
Я выполнил hdfs fsck /
, который сообщает, что файловая система в порядке. Я выполнил hdfs dfsadmin -report
, который сообщает, что отсутствуют два блока, но не дает подробностей.
Как мне найти эти отсутствующие блоки и, следовательно, устранить их?
Я наблюдал аналогичное сообщение в своей конфигурации сегодня (CentOS 7.3, HDP 2.5.3, Ambari 2.4.2).
Файлы с отсутствующими блоками мне удалось найти с помощью:
hdfs fsck / | grep -i 'miss'
hdfs fsck / | grep 'miss' | cut -d ":" -f 1
hdfs fsck / | grep 'Under replicated' | cut -d ":" -f 1
и исправить их с помощью:
hdfs dfs -setrep 3 <fileName>
вы можете найти количество поврежденных и отсутствующих блоков с помощью следующей команды
hdfs fsck -list-corruptfileblocks
Ответ или решение
Как определить и исправить отсутствующие блоки, о которых сообщает Ambari для NameNode
Ваша текущая ситуация заключается в том, что Ambari генерирует предупреждение о состоянии блоков NameNode, сообщая: NameNode Blocks Health: Total Blocks:[38252543], Missing Blocks:[2]
. Несмотря на использование команд hdfs fsck /
и hdfs dfsadmin -report
, вы не получаете конкретной информации о том, какие блоки отсутствуют.
Шаг 1: Поиск отсутствующих блоков
Для начала, было бы разумно использовать команду hdfs fsck
с добавлением фильтрации результатов для более эффективного поиска отсутствующих блоков. Попробуйте следующие команды:
hdfs fsck / | grep -i 'miss'
Эта команда проверит файловую систему HDFS и отобразит строки, в которых говорится об отсутствующих блоках.
Если вам нужно будет извлечь всего лишь имена файлов с отсутствующими блоками, можно применить:
hdfs fsck / | grep 'miss' | cut -d ":" -f 1
Кроме того, по команде hdfs fsck / | grep 'Under replicated' | cut -d ":" -f 1
вы сможете обнаружить файлы, которые недостаточно реплицированы.
Также полезно проверить наличие поврежденных блоков с помощью:
hdfs fsck -list-corruptfileblocks
Эта команда предоставит вам список всех файлов с поврежденными и отсутствующими блоками.
Шаг 2: Восстановление отсутствующих блоков
После того как вы идентифицируете файлы с отсутствующими блоками, следующим шагом будет их восстановление. Один из способов исправления состоит в обновлении репликации файлов. Если, к примеру, вы обнаружили файл с отсутствующими блоками, вы можете увеличить количество реплик следующим образом:
hdfs dfs -setrep 3 <путь к файлу>
Замените <путь к файлу>
на фактический путь к файлу, который вызывает проблему. Увеличив количество реплик, вы создадите новые реплики данных, что поможет вам устранить отсутствие блоков.
Шаг 3: Мониторинг и уведомления
После окончания процедур восстановления важно периодически проверять состояние NameNode через Ambari, чтобы убедиться, что предупреждения больше не отображаются. Вам стоит также настроить периодический мониторинг файловой системы, чтобы предотвратить возможные проблемы в будущем.
Заключение
Отсутствующие блоки в HDFS могут вызвать серьезные препятствия для производительности и надежности вашей системы хранения данных. С помощью перечисленных команд и методов вы сможете не только найти отсутствующие блоки, но и восстановить данные, минимизировав потери. Регулярное использование функций проверки в HDFS в сочетании с мониторингом через Ambari поможет поддерживать ваше окружение в здоровом состоянии, что критично для обеспечения надежности предоставляемых сервисов.