Der Namensknoten befindet sich im abgesicherten Modus. Nicht in der Lage zu gehen

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.

in hdfs nichts erstellen können

Ich tat

root# bin/hadoop fs -safemode leave

Aber zeigen

safemode: Unknown command

Was ist das Problem?

Lösung

Unmesha SreeVeni
quelle
2
In meinem Fall war es in einem sicheren Knoten, weil die Ressourcen niedrig waren (läuft auf Docker)
Pomber
@BrendenBrown, hier ist der aktuell funktionierende Link für Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov
Und hier ist der aktuell funktionierende Link für den Hadoop «Stable» (derzeit 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Antworten:

211

Um den Namensknoten zwangsweise den Sicherheitsmodus verlassen zu lassen, sollte der folgende Befehl ausgeführt werden:

 bin/hadoop dfsadmin -safemode leave

Sie erhalten eine Unknown commandFehlermeldung für Ihren Befehl, da dies -safemodekein Unterbefehl für ist hadoop fs, aber von hadoop dfsadmin.

Auch nach dem obigen Befehl würde ich Ihnen empfehlen, einmal auszuführen, hadoop fsckdamit etwaige Inkonsistenzen, die sich in den HDFS eingeschlichen haben, behoben werden können.

Aktualisieren:

Verwenden Sie für neuere Distributionen den hdfsBefehl anstelle des hadoopBefehls. Der hadoopBefehl ist veraltet:

hdfs dfsadmin -safemode leave

hadoop dfsadminwurde veraltet, ebenso wie der hadoop fsBefehl. Alle hdfs-bezogenen Aufgaben werden in einen separaten Befehl verschoben hdfs.

Amar
quelle
2
eigentlich, warum dies "Namensknoten ist im Sicherheitsmodus"
anzeigt
1
Grundsätzlich wechselt der Namensknoten in ungewöhnlichen Situationen in den abgesicherten Modus, z. B. wenn die Festplatte voll ist, auch in der Startphase. Lesen Sie hier mehr; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar
2
Ich verwende Hadoop 2.0.0-cdh4.1.1. Als ich den hadoop dfsadminBefehl ausführte , gab er mir ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF Folgendes : ______ ... aber immer noch ausgeführt. Der folgende Vorschlag von @ user3316017 scheint die empfohlene Syntax zu sein.
CJBS
Ich habe meine Antwort gemäß den neuen Distributionen aktualisiert. Wenn uns jemand bei der Ermittlung der genauen Version von Apache Hadoop helfen kann, seitdem diese Abwertungen ins Bild gekommen sind, wäre es großartig.
Amar
1
Für den Fall, dass HDFS wieder in den abgesicherten Modus wechselt, sobald der hdfs dfsadmin -safemode leaveBefehl ausgeführt wird, weil der Cluster voll ist, ist es manchmal möglich, aus der Situation herauszukommen, indem sofort ein Befehl zum Bereinigen von hdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Dingen verkettet wird
27

Versuchen Sie dies, es wird funktionieren

sudo -u hdfs hdfs dfsadmin -safemode leave
Wesam Na
quelle
Dieser Befehl funktionierte für mich, da er Superuser-Privilegien erfordern kann. Danke @wesam
NikhilP
7

Wenn Sie Hadoop Version 2.6.1 oben verwenden, während der Befehl funktioniert, beschwert er sich darüber, dass er abgeschrieben ist. Ich konnte das eigentlich nicht verwenden, hadoop dfsadmin -safemode leaveweil ich Hadoop in einem Docker-Container ausgeführt habe und dieser Befehl auf magische Weise fehlschlägt, wenn er im Container ausgeführt wird. Also habe ich dies getan. Ich habe das dfs.safemode.threshold.pctDokument überprüft und in der Dokumentation gefunden, in der steht

Gibt den Prozentsatz der Blöcke an, die die durch dfs.replication.min definierte minimale Replikationsanforderung erfüllen sollen. Werte kleiner oder gleich 0 bedeuten, dass Sie nicht auf einen bestimmten Prozentsatz von Blöcken warten müssen, bevor Sie den Sicherheitsmodus verlassen. Werte größer als 1 machen den abgesicherten Modus dauerhaft.

Deshalb habe ich hdfs-site.xmlFolgendes geändert: (In älteren Hadoop-Versionen müssen Sie dies anscheinend in tun hdfs-default.xml:

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

Namenode wechselt bei Speichermangel in den Sicherheitsmodus. Dadurch wird das HDFS nur noch lesbar. Das heißt, man kann kein zusätzliches Verzeichnis oder keine zusätzliche Datei im HDFS erstellen. Um den Sicherheitsmodus zu verlassen, wird der folgende Befehl verwendet:

hadoop dfsadmin -safemode leave

Wenn Sie den Cloudera Manager verwenden:

go to >>Actions>>Leave Safemode

Aber es löst das Problem nicht immer. Die vollständige Lösung besteht darin, Platz im Speicher zu schaffen. Verwenden Sie den folgenden Befehl, um die Speichernutzung zu überprüfen.

free -m

Wenn Sie Cloudera verwenden, können Sie auch überprüfen, ob das HDFS Anzeichen einer schlechten Gesundheit aufweist. Es muss wahrscheinlich ein Speicherproblem im Zusammenhang mit dem Namensknoten auftreten. Weisen Sie mehr Speicher zu, indem Sie die verfügbaren Optionen befolgen. Ich bin nicht sicher, welche Befehle für dasselbe verwendet werden sollen, wenn Sie den Cloudera Manager nicht verwenden, aber es muss einen Weg geben. Ich hoffe es hilft! :) :)

Amitesh Ranjan
quelle
5

Versuche dies

sudo -u hdfs hdfs dfsadmin -safemode leave

Überprüfen Sie den Status des Sicherheitsmodus

sudo -u hdfs hdfs dfsadmin -safemode get

Wenn es sich immer noch im Sicherheitsmodus befindet, ist einer der Gründe nicht genügend Speicherplatz in Ihrem Knoten. Sie können die Festplattennutzung Ihres Knotens überprüfen, indem Sie:

df -h

Wenn die Root-Partition voll ist, löschen Sie Dateien oder fügen Sie Speicherplatz in Ihrer Root-Partition hinzu und wiederholen Sie den ersten Schritt.

Tarun Reddy
quelle
3

abgesicherter Modus ein bedeutet (HDFS befindet sich nur im READ-Modus)
abgesicherter Modus aus bedeutet (HDFS befindet sich im beschreibbaren und lesbaren Modus)

Im Hadoop 2.6.0 können wir den Status des Namensknotens mithilfe der folgenden Befehle überprüfen:

ÜBERPRÜFEN DES Namensknotenstatus

$ hdfs dfsadmin -safemode get

IN DEN SICHEREN MODUS EINGEBEN:

$ hdfs dfsadmin -safemode enter

SICHEREN Modus VERLASSEN

~$ hdfs dfsadmin -safemode leave
Vishwajeet Singh
quelle
1
Um den sicheren Modus zu verlassen: ~ $ hdfs dfsadmin -safemode forceExit
ammills01
1

Führen Sie den folgenden Befehl mit dem HDFS-Benutzer aus, um den abgesicherten Modus zu deaktivieren:

sudo -u hdfs hadoop dfsadmin -safemode leave
Mayank Gupta
quelle
0

Verwenden Sie den folgenden Befehl, um den abgesicherten Modus auszuschalten

$> hdfs dfsadmin -safemode verlassen

Azam Khan
quelle