Имя node находится в безопасном режиме. Не в состоянии уйти
root# bin/hadoop fs -mkdir t
mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.
не удалось создать что-либо в hdfs
Я сделал
root# bin/hadoop fs -safemode leave
Но показывая
safemode: Unknown command
в чем проблема?
Решение
Ответы
Ответ 1
Чтобы принудительно оставить наменодат оставить safemode, следующая команда должна быть выполнена:
bin/hadoop dfsadmin -safemode leave
Вы получаете ошибку Unknown command
для своей команды, поскольку -safemode
не является подкомандой для hadoop fs
, но имеет значение hadoop dfsadmin
.
Также после этой команды я предложил бы вам запустить hadoop fsck
, чтобы любые несогласования, выполненные в hdfs, могли быть отсортированы.
Update:
Используйте команду hdfs
вместо команды hadoop
для более новых распределений. Команда hadoop
устарела:
hdfs dfsadmin -safemode leave
hadoop dfsadmin
устарел, поэтому команда hadoop fs
, все связанные с hdfs задачи перемещаются в отдельную команду hdfs
.
Ответ 2
попробуйте это, он будет работать
sudo -u hdfs hdfs dfsadmin -safemode leave
Ответ 3
Команда не работала для меня, но следующее
hdfs dfsadmin -safemode leave
Я использовал команду hdfs
вместо команды hadoop
.
Отметьте http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe-mode-
Ответ 4
Если вы используете Hadoop версии 2.6.1 выше, в то время как команда работает, она жалуется, что ее обесценили. На самом деле я не мог использовать hadoop dfsadmin -safemode leave
, потому что я запускал Hadoop в контейнере Docker и эта команда магически терпит неудачу при запуске в контейнере, так что я сделал это. Я проверил документ и нашел dfs.safemode.threshold.pct
в документации, в которой говорится
Определяет процент блоков, которые должны удовлетворять минимальным требование репликации, определенное dfs.replication.min. Значения меньше чем или равно 0, означает не ждать какого-либо определенного процента блоков перед выходом из safemode. Значения, превышающие 1, будут безопасными режим постоянный.
поэтому я изменил hdfs-site.xml
на следующие (в более старых версиях Hadoop, видимо, вам нужно сделать это в hdfs-default.xml
:
<configuration>
<property>
<name>dfs.safemode.threshold.pct</name>
<value>0</value>
</property>
</configuration>
Ответ 5
Namenode входит в safemode при нехватке памяти. В результате HDFS становится доступным только для чтения. Это означает, что нельзя создать какой-либо дополнительный каталог или файл в HDFS. Чтобы выйти из безопасного режима, используется следующая команда:
hadoop dfsadmin -safemode leave
Если вы используете менеджер cloudera:
go to >>Actions>>Leave Safemode
Но это не всегда решает проблему. Полное решение заключается в создании некоторого пространства в памяти. Используйте следующую команду, чтобы проверить использование вашей памяти.
free -m
Если вы используете cloudera, вы также можете проверить, показывает ли HDFS некоторые признаки плохого состояния здоровья. Вероятно, это должно показать некоторую проблему памяти, связанную с namenode. Выделите больше памяти, выполнив следующие параметры. Я не уверен, какие команды использовать для того же, если вы не используете cloudera manager, но должен быть способ. Надеюсь, поможет!:)
Ответ 6
Выполните приведенную ниже команду с помощью пользователя HDFS OS, чтобы отключить безопасный режим:
sudo -u hdfs hadoop dfsadmin -safemode leave
Ответ 7
Попробуйте
sudo -u hdfs hdfs dfsadmin -safemode leave
проверить статус safemode
sudo -u hdfs hdfs dfsadmin -safemode get
Если он все еще находится в режиме safemode, то одной из причин было бы недостаточно места в вашем node, вы можете проверить использование диска node, используя:
df -h
если корневой раздел заполнен, удалите файлы или добавьте место в корневой раздел и повторите первый шаг.
Ответ 8
используйте команду ниже, чтобы отключить безопасный режим
$ > hdfs dfsadmin -safemode leave