Вузол імені знаходиться в безпечному режимі. Не в змозі виїхати


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
У моєму випадку він був у безпечному вузлі, оскільки ресурсів було мало (працює на докер)
помбер

@BrendenBrown, ось поточне посилання для Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Євген Гр. Філіппов

А ось що працює зараз посилання на Hadoop «стабільний» (зараз 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Євген Гр. Філіппов

Відповіді:


211

Для того, щоб насильно відпустити namenode залишити safemode, слід виконати таку команду:

 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 в
safemode

1
В основному, Namode переходить у безпечний режим у незвичних ситуаціях, наприклад, коли диск заповнений, також у фазі запуску. Детальніше читайте тут; 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

Оновлено мою відповідь за новими дистрибутивами, якщо хтось може допомогти нам у встановленні точної версії апаш-хадопу з тих пір, коли ці депресії з'явилися на світ, це було б чудово.
Амар

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


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


Посилання на Doc у безпечному режимі Hadoop: hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
CJBS

7

Якщо ви використовуєте Hadoop версії 2.6.1 вище, поки команда працює, вона скаржиться, що її знецінилося. Я насправді не міг використати, hadoop dfsadmin -safemode leaveтому що я запускав Hadoop в контейнері Docker, і ця команда магічно виходить з ладу під час запуску в контейнері, так що я це зробив. Я перевірив doc і знайшов 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 входить у сафемод, коли бракує пам'яті. В результаті HDFS стає читабельним. Це означає, що не можна створювати ніяких додаткових каталогів або файлів у HDFS. Для виходу із сафемоду використовується така команда:

hadoop dfsadmin -safemode leave

Якщо ви використовуєте менеджера cloudera:

go to >>Actions>>Leave Safemode

Але це не завжди вирішує проблему. Повне рішення полягає в тому, щоб зробити деякий простір в пам'яті. Використовуйте наступну команду, щоб перевірити використання пам'яті.

free -m

Якщо ви використовуєте клодеру, ви також можете перевірити, чи виявляє HDFS якісь ознаки поганого самопочуття. Напевно, має бути показано певну проблему пам'яті, пов’язану з наментодом. Виділіть більше пам’яті, дотримуючись наявних опцій. Я не впевнений, які команди використовувати для того ж, якщо ви не використовуєте менеджера cloudera, але повинен бути спосіб. Сподіваюся, це допомагає! :)


5

Спробуйте це

sudo -u hdfs hdfs dfsadmin -safemode leave

перевірити стан сафемоду

sudo -u hdfs hdfs dfsadmin -safemode get

Якщо він все ще знаходиться в safemode, то однією з причин буде недостатньо місця у вашому вузлі, ви можете перевірити використання свого вузла на диску, використовуючи:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.