Le nœud de nom est en mode sans échec. Impossible de partir


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.

impossible de créer quoi que ce soit dans hdfs

J'ai fait

root# bin/hadoop fs -safemode leave

Mais montrant

safemode: Unknown command

quel est le problème?

Solution



2
Dans mon cas, il était en nœud sûr car les ressources étaient faibles (fonctionnant sur docker)
pomber

@BrendenBrown, voici le lien de travail actuellement pour Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Et voici le lien de travail actuellement pour la «stable» Hadoop (actuellement 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Réponses:


211

Afin de laisser de force le namenode quitter safemode, la commande suivante doit être exécutée:

 bin/hadoop dfsadmin -safemode leave

Vous obtenez une Unknown commanderreur pour votre commande car ce -safemoden'est pas une sous-commande pour hadoop fs, mais c'est de hadoop dfsadmin.

Également après la commande ci-dessus, je vous suggère de l'exécuter une fois hadoop fsckafin que toutes les incohérences qui se sont glissées dans le hdfs puissent être résolues.

Mettre à jour:

Utilisez la hdfscommande au lieu de la hadoopcommande pour les nouvelles distributions. La hadoopcommande est obsolète:

hdfs dfsadmin -safemode leave

hadoop dfsadminest obsolète hadoop fs, tout comme la commande, toutes les tâches liées à hdfs sont déplacées vers une commande distincte hdfs.


2
en fait pourquoi cela affiche 'namenode est en mode sécurisé'
Unmesha SreeVeni

1
Fondamentalement, namenode entre en mode sans échec dans des situations inhabituelles, par exemple lorsque le disque est plein, également en phase de démarrage. En savoir plus ici; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar

2
J'utilise Hadoop 2.0.0-cdh4.1.1 Lorsque j'ai exécuté la hadoop dfsadmincommande, cela m'a donné ceci: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... mais toujours exécuté. Il semble que la suggestion de @ user3316017 ci-dessous est la syntaxe recommandée.
CJBS

J'ai mis à jour ma réponse selon les nouvelles distributions, si quelqu'un peut nous aider à établir la version exacte d'apache hadoop depuis que ces dépréciations sont apparues, ce serait génial.
Amar

1
Pour le cas où HDFS passe à nouveau en mode sans échec dès que la commande hdfs dfsadmin -safemode leaveest exécutée parce que le cluster est plein, il est parfois possible de sortir de la situation en enchaînant immédiatement une commande pour nettoyer des choses, par exemplehdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

essayez ceci, cela fonctionnera

sudo -u hdfs hdfs dfsadmin -safemode leave

cette commande a fonctionné pour moi car elle peut nécessiter le privilège de superutilisateur..merci @wesam
NikhilP


7

Si vous utilisez Hadoop version 2.6.1 ci-dessus, alors que la commande fonctionne, elle se plaint qu'elle est dépréciée. En fait, je ne pouvais pas utiliser le hadoop dfsadmin -safemode leaveparce que j'exécutais Hadoop dans un conteneur Docker et que cette commande échouait comme par magie lorsqu'elle était exécutée dans le conteneur, alors ce que j'ai fait, c'est ceci. J'ai vérifié doc et trouvé dfs.safemode.threshold.pctdans la documentation qui dit

Spécifie le pourcentage de blocs qui doivent satisfaire l'exigence de réplication minimale définie par dfs.replication.min. Les valeurs inférieures ou égales à 0 signifient qu'il ne faut pas attendre un pourcentage particulier de blocs avant de quitter le mode sans échec. Les valeurs supérieures à 1 rendront le mode sans échec permanent.

donc j'ai changé le hdfs-site.xmldans ce qui suit (dans les anciennes versions de Hadoop, apparemment vous devez le faire dans hdfs-default.xml:

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

5

Namenode entre en mode sécurisé en cas de manque de mémoire. En conséquence, le HDFS devient uniquement lisible. Cela signifie que l'on ne peut pas créer de répertoire ou de fichier supplémentaire dans le HDFS. Pour sortir du mode sécurisé, la commande suivante est utilisée:

hadoop dfsadmin -safemode leave

Si vous utilisez cloudera manager:

go to >>Actions>>Leave Safemode

Mais cela ne résout pas toujours le problème. La solution complète consiste à faire de la place dans la mémoire. Utilisez la commande suivante pour vérifier votre utilisation de la mémoire.

free -m

Si vous utilisez cloudera, vous pouvez également vérifier si le HDFS montre des signes de mauvaise santé. Il doit probablement montrer un problème de mémoire lié au namenode. Allouez plus de mémoire en suivant les options disponibles. Je ne sais pas quelles commandes utiliser pour la même chose si vous n'utilisez pas le gestionnaire cloudera, mais il doit y avoir un moyen. J'espère que ça aide! :)


5

Essaye ça

sudo -u hdfs hdfs dfsadmin -safemode leave

vérifier l'état du mode sécurisé

sudo -u hdfs hdfs dfsadmin -safemode get

S'il est toujours en mode sans échec, alors l'une des raisons serait qu'il n'y ait pas assez d'espace dans votre nœud, vous pouvez vérifier l'utilisation du disque de votre nœud en utilisant:

df -h

si la partition racine est pleine, supprimez les fichiers ou ajoutez de l'espace dans votre partition racine et réessayez la première étape.


4

mode sans échec activé signifie (HDFS est en mode LECTURE uniquement)
signifie que le mode sans échec est désactivé (HDFS est en mode inscriptible et lisible)

Dans Hadoop 2.6.0, nous pouvons vérifier l'état du nœud de nom à l'aide des commandes ci-dessous:

POUR VÉRIFIER l'état du nœud de nom

$ hdfs dfsadmin -safemode get

POUR ENTRER EN MODE SÉCURISÉ:

$ hdfs dfsadmin -safemode enter

POUR QUITTER le mode SÉCURISÉ

~$ hdfs dfsadmin -safemode leave

1
POUR FORCER LAISSER LE MODE SÉCURISÉ: ~ $ hdfs dfsadmin -safemode forceExit
ammills01

1

Exécutez la commande ci-dessous en utilisant l'utilisateur HDFS OS pour désactiver le mode sans échec:

sudo -u hdfs hadoop dfsadmin -safemode leave

0

utilisez la commande ci-dessous pour désactiver le mode sans échec

$> hdfs dfsadmin -safemode quitter

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.