Узел имени находится в безопасном режиме. Не может уйти


122
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

в чем проблема?

Решение



2
В моем случае это было в безопасном узле, потому что ресурсов было мало (работает на докере)
pomber

@BrendenBrown, вот текущая рабочая ссылка для Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Филиппов

А вот ссылка на «стабильную» версию Hadoop (в настоящее время 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Филиппов

Ответы:


211

Для принудительного выхода namenode из безопасного режима необходимо выполнить следующую команду:

 bin/hadoop dfsadmin -safemode leave

Вы получаете сообщение Unknown commandоб ошибке для своей команды, поскольку -safemodeэто не подкоманда для hadoop fs, но она есть hadoop dfsadmin.

Также после указанной выше команды я бы посоветовал вам запустить ее один раз, hadoop fsckчтобы можно было устранить любые несоответствия в hdfs.

Обновить:

Используйте hdfsкоманду вместо hadoopкоманды для новых дистрибутивов. hadoopКоманда устарела:

hdfs dfsadmin -safemode leave

hadoop dfsadminустарел, как и hadoop fsкоманда, все задачи, связанные с hdfs, переносятся в отдельную команду hdfs.


2
на самом деле, почему это отображает 'namenode is in safemode'
Unmesha SreeVeni

1
Обычно namenode входит в безопасный режим в необычных ситуациях, например, когда диск заполнен, а также на этапе запуска. Подробнее читайте здесь; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Амар,

2
Я использую Hadoop 2.0.0-cdh4.1.1 Когда я запустил hadoop dfsadminкоманду, она выдала мне следующее: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... но все равно запустилась. Похоже, предложение @ user3316017 ниже является рекомендуемым синтаксисом.
CJBS

Обновил мой ответ в соответствии с новыми дистрибутивами, если кто-нибудь может помочь нам в установлении точной версии apache hadoop, так как, когда эти устаревшие версии вошли в картину, было бы здорово.
Amar

1
В случае, когда HDFS снова переходит в безопасный режим, как только команда hdfs dfsadmin -safemode leaveзапускается, потому что кластер заполнен, иногда можно выйти из ситуации, немедленно связав команду для очистки материала, напримерhdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

попробуйте это, это сработает

sudo -u hdfs hdfs dfsadmin -safemode leave

эта команда сработала для меня, так как она может требовать привилегий суперпользователя ..
спасибо

21

Команда не сработала для меня, но следующее

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- режим - ссылка тоже


Ссылка на документ о безопасном режиме Hadoop: hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
CJBS,

7

Если вы используете Hadoop версии 2.6.1 выше, пока команда работает, она жалуется, что она обесценилась. На самом деле я не мог использовать, hadoop dfsadmin -safemode leaveпотому что я запускал Hadoop в контейнере Docker, и эта команда волшебным образом не работает при запуске в контейнере, поэтому я сделал следующее. Я проверил документ и нашел dfs.safemode.threshold.pctв документации, что говорит

Задает процент блоков, которые должны удовлетворять минимальным требованиям репликации, определенным в dfs.replication.min. Значения меньше или равные 0 означают, что не следует ждать определенного процента блоков перед выходом из безопасного режима. Значения больше 1 сделают безопасный режим постоянным.

поэтому я изменил это hdfs-site.xmlна следующее (в старых версиях Hadoop, по-видимому, вам нужно сделать это в hdfs-default.xml:

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>

5

Namenode переходит в безопасный режим при нехватке памяти. В результате HDFS становится доступной только для чтения. Это означает, что в HDFS нельзя создать дополнительный каталог или файл. Для выхода из безопасного режима используется следующая команда:

hadoop dfsadmin -safemode leave

Если вы используете менеджер cloudera:

go to >>Actions>>Leave Safemode

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

free -m

Если вы используете Cloudera, вы также можете проверить, не показывает ли HDFS какие-либо признаки плохого состояния. Вероятно, это показывает некоторую проблему с памятью, связанную с namenode. Выделите больше памяти, следуя доступным параметрам. Я не уверен, какие команды использовать для этого, если вы не используете диспетчер cloudera, но способ должен быть. Надеюсь, поможет! :)


5

Попробуй это

sudo -u hdfs hdfs dfsadmin -safemode leave

проверить статус безопасного режима

sudo -u hdfs hdfs dfsadmin -safemode get

Если он все еще находится в безопасном режиме, то одной из причин может быть недостаточно места на вашем узле, вы можете проверить использование диска вашего узла, используя:

df -h

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


4

безопасный режим включен означает (HDFS находится в режиме только чтения)
безопасный режим отключен означает (HDFS находится в режиме записи и чтения)

В Hadoop 2.6.0, мы можем проверить статус узла имени с помощью следующих команд:

ЧТОБЫ ПРОВЕРИТЬ статус узла имени

$ hdfs dfsadmin -safemode get

ЧТОБЫ ВОЙТИ В БЕЗОПАСНЫЙ РЕЖИМ:

$ hdfs dfsadmin -safemode enter

ВЫЙТИ ИЗ БЕЗОПАСНОГО режима

~$ hdfs dfsadmin -safemode leave

1
ДЛЯ ПРИНУДИТЕЛЬНОГО ВЫХОДА ИЗ БЕЗОПАСНОГО РЕЖИМА: ~ $ hdfs dfsadmin -safemode forceExit
ammills01

1

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

sudo -u hdfs hadoop dfsadmin -safemode leave

0

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

$> hdfs dfsadmin -safemode leave

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.