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.
pas capable de créer quoi que ce soit en HDFS
J'ai fait
root# bin/hadoop fs -safemode leave
Mais montrant
safemode: Unknown command
quel est le problème?
Afin de forcer le namenode à quitter le safemode, la commande suivante doit être exécutée:
bin/hadoop dfsadmin -safemode leave
Vous obtenez l'erreur Unknown command
pour votre commande car -safemode
n'est pas une sous-commande pour hadoop fs
, mais il s'agit de hadoop dfsadmin
.
De plus, après la commande ci-dessus, je vous suggèrerais de lancer une fois hadoop fsck
afin que toutes les incohérences apparues dans les fichiers hdfs puissent être résolues.
Mise à jour:
Utilisez la commande hdfs
au lieu de la commande hadoop
pour les nouvelles distributions. La commande hadoop
est obsolète:
hdfs dfsadmin -safemode leave
hadoop dfsadmin
est obsolète, de même que hadoop fs
commande, toutes les tâches liées à hdfs sont déplacées vers une commande séparée hdfs
.
essayez ceci, ça va marcher
Sudo -u hdfs hdfs dfsadmin -safemode leave
Le commandement n’a pas fonctionné pour moi, mais les suivants ont
hdfs dfsadmin -safemode leave
J'ai utilisé la commande hdfs
à la place de la commande hadoop
.
Départ http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is- in-safe-mode - lien aussi
Si vous utilisez Hadoop version 2.6.1 ci-dessus, alors que la commande fonctionne, elle se plaint de sa dépréciation. En fait, je ne pouvais pas utiliser hadoop dfsadmin -safemode leave
parce que j'exécutais Hadoop dans un conteneur Docker et que la commande échouait comme par magie lorsqu'elle était exécutée dans le conteneur. J'ai vérifié doc et trouvé dfs.safemode.threshold.pct
dans la documentation qui dit
Indique le pourcentage de blocs devant 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 safemode. Les valeurs supérieures à 1 rendront le mode sans échec permanent.
j'ai donc changé le hdfs-site.xml
comme suit (Dans les anciennes versions de Hadoop, vous devez apparemment le faire dans hdfs-default.xml
:
<configuration>
<property>
<name>dfs.safemode.threshold.pct</name>
<value>0</value>
</property>
</configuration>
Essayez ceci
Sudo -u hdfs hdfs dfsadmin -safemode leave
vérifier le statut du safemode
Sudo -u hdfs hdfs dfsadmin -safemode get
S'il est toujours en mode sécurisé, alors une des raisons serait un espace insuffisant dans votre nœud. Vous pouvez vérifier l'utilisation de votre disque de nœud à l'aide de:
df -h
si la partition racine est pleine, supprimez des fichiers ou ajoutez de l’espace dans votre partition racine, puis réessayez.
Namenode entre en mode safem quand il y a un manque de mémoire. En conséquence, le HDFS devient uniquement lisible. Cela signifie que vous ne pouvez créer aucun répertoire ou 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 la 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 Cloudera Manager, mais il doit y avoir un moyen. J'espère que ça aide! :)
mode sécurisé allumé (HDFS est en mode READ uniquement)
mode sécurisé désactivé (HDFS est en mode Lecture et lecture)
Dans Hadoop 2.6.0
, nous pouvons vérifier l'état du noeud de nom à l'aide des commandes ci-dessous:
POUR VÉRIFIER LE STATUT DU NOM DE NOM
$ hdfs dfsadmin -safemode get
POUR ENTRER EN MODE SÉCURITAIRE:
$ hdfs dfsadmin -safemode enter
Pour quitter le mode sûr
~$ hdfs dfsadmin -safemode leave
Exécutez la commande ci-dessous à l'aide de l'utilisateur du système d'exploitation HDFS pour désactiver le mode sans échec:
Sudo -u hdfs hadoop dfsadmin -safemode leave
utiliser la commande ci-dessous pour désactiver le mode sans échec
$> hdfs dfsadmin -safemode quitte