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

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

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

Решение: http://unmeshasreeveni.blogspot.com/2014/04/name-node-is-in-safe-mode-how-to-leave.html?m=1


person USB    schedule 04.04.2013    source источник
comment
hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode может помочь.   -  person Brenden Brown    schedule 04.04.2013
comment
В моем случае это был безопасный узел, потому что ресурсов было мало (работает на докере).   -  person pomber    schedule 10.10.2017
comment
@BrendenBrown, вот текущая рабочая ссылка для Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/   -  person Eugene Gr. Philippov    schedule 02.02.2019
comment
А вот текущая рабочая ссылка для «стабильной» версии Hadoop (на данный момент 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/   -  person Eugene Gr. Philippov    schedule 02.02.2019
comment
ссылка unmeshasreeveni. blogspot.in/2014/04/ мертв, я его отредактирую   -  person törzsmókus    schedule 08.09.2020
comment
О, ссылка умерла   -  person USB    schedule 09.09.2020
comment
Не могли бы вы проверить, работает ли эта ссылка? unmeshasreeveni.blogspot.com/2014/04/   -  person USB    schedule 09.09.2020


Ответы (9)


Чтобы принудительно разрешить 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.

person Amar    schedule 04.04.2013
comment
на самом деле, почему это отображает «namenode находится в безопасном режиме» - person USB; 04.04.2013
comment
В основном namenode входит в безопасный режим в необычных ситуациях, например, когда диск заполнен, а также на этапе запуска. Подробнее читайте здесь; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode - person Amar; 04.04.2013
comment
Я использую 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 рекомендуемый синтаксис. - person CJBS; 27.02.2014
comment
Обновил мой ответ в соответствии с новыми дистрибутивами, если кто-нибудь может помочь нам установить точную версию apache hadoop с тех пор, как появились эти устаревания, было бы здорово. - person Amar; 19.03.2014
comment
@Amar Оба этих решения работают для меня в том смысле, что консоль выводит безопасный режим ВЫКЛ. Однако, когда я пытаюсь запустить ./bin/hdfs dfs -put libexec/etc/hadoop input, он печатает Невозможно создать каталог /user/username/input. Узел имени находится в безопасном режиме. Что происходит? - person Brian; 29.04.2015
comment
В случае, когда HDFS снова переходит в безопасный режим, как только запускается команда hdfs dfsadmin -safemode leave из-за заполнения кластера, иногда можно выйти из ситуации, немедленно сцепив команду для очистки, например. hdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete - person Shadocko; 01.04.2016
comment
Вы должны быть пользователем hdfs, поэтому sudo -u hdfs hdfs dfsadmin -safemode leave - person SparkleGoat; 23.02.2019

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

sudo -u hdfs hdfs dfsadmin -safemode leave
person Wesam Na    schedule 03.01.2015
comment
эта команда сработала для меня, так как может потребовать привилегий суперпользователя.. спасибо @wesam - person NikhilP; 14.12.2017

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

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-в-безопасном-режиме- link тоже

person Kishan B    schedule 23.02.2014
comment
Ссылка на документ в безопасном режиме Hadoop: hadoop .apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ - person CJBS; 27.02.2014

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

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

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

$ hdfs dfsadmin -safemode get

ДЛЯ ВХОДА В БЕЗОПАСНЫЙ РЕЖИМ:

$ hdfs dfsadmin -safemode enter

ВЫХОД ИЗ БЕЗОПАСНОГО РЕЖИМА

~$ hdfs dfsadmin -safemode leave
person Vishwajeet Singh    schedule 12.09.2018
comment
ДЛЯ ПРИНУДИТЕЛЬНОГО ВЫХОДА ИЗ БЕЗОПАСНОГО РЕЖИМА: ~$ hdfs dfsadmin -safemode forceExit - person ammills01; 30.01.2019

Если вы используете 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>
person ambodi    schedule 19.11.2015

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

hadoop dfsadmin -safemode leave

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

go to >>Actions>>Leave Safemode

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

free -m

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

person Amitesh Ranjan    schedule 24.09.2014

Попробуйте это

sudo -u hdfs hdfs dfsadmin -safemode leave

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

sudo -u hdfs hdfs dfsadmin -safemode get

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

df -h

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

person Tarun Reddy    schedule 21.11.2017

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

sudo -u hdfs hadoop dfsadmin -safemode leave
person Mayank Gupta    schedule 23.08.2017

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

$> hdfs dfsadmin -safemode оставить

person Azam Khan    schedule 14.09.2017