Имя 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

Ответ 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