El nodo de nombre está en modo seguro. No puedo irme

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.

no puedo crear nada en hdfs

yo hice

root# bin/hadoop fs -safemode leave

Pero mostrando

safemode: Unknown command

¿Cuál es el problema?

Solución

Unmesha SreeVeni
fuente
2
En mi caso, estaba en un nodo seguro porque los recursos eran bajos (ejecutándose en la
ventana
@BrendenBrown, aquí está el enlace que funciona actualmente para Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov
Y aquí está el enlace que funciona actualmente para Hadoop «estable» (actualmente 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Respuestas:

211

Para permitir forzosamente que el namenode salga del modo seguro, se debe ejecutar el siguiente comando:

 bin/hadoop dfsadmin -safemode leave

Está obteniendo un Unknown commanderror para su comando ya -safemodeque no es un subcomando de hadoop fs, pero lo es de hadoop dfsadmin.

Además, después del comando anterior, le sugiero que hadoop fscklo ejecute una vez para que se solucione cualquier inconsistencia que se haya producido en los hdfs.

Actualizar:

Use hdfscomando en lugar de hadoopcomando para distribuciones más nuevas. El hadoopcomando está en desuso:

hdfs dfsadmin -safemode leave

hadoop dfsadminha quedado obsoleto y también lo es el hadoop fscomando, todas las tareas relacionadas con hdfs se están moviendo a un comando separado hdfs.

Amar
fuente
2
en realidad, por qué esto muestra 'namenode está en modo seguro'
Unmesha SreeVeni
1
Básicamente, namenode entra en modo seguro en situaciones inusuales, por ejemplo, cuando el disco está lleno, también en la fase de inicio. Leer más aquí; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar
2
Estoy usando Hadoop 2.0.0-cdh4.1.1 Cuando ejecuté el hadoop dfsadmincomando, me dio esto: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... pero aún se ejecutó. Parece que la sugerencia de @ user3316017 a continuación es la sintaxis recomendada.
CJBS
Actualicé mi respuesta según las nuevas distribuciones, si alguien puede ayudarnos a establecer la versión exacta de apache hadoop, ya que cuando estas depreciaciones se hicieron visibles, sería genial.
Amar
1
En el caso de que HDFS vuelva al modo seguro tan pronto como hdfs dfsadmin -safemode leavese ejecute el comando porque el clúster está lleno, a veces es posible salir de la situación encadenando inmediatamente un comando para limpiar cosas, por ejemplohdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko
27

prueba esto, funcionará

sudo -u hdfs hdfs dfsadmin -safemode leave
Wesam Na
fuente
este comando funcionó para mí, ya que puede requerir privilegios de superusuario ... gracias @wesam
NikhilP
7

Si usa Hadoop versión 2.6.1 anterior, mientras el comando funciona, se queja de que está depreciado. De hecho, no pude usar el hadoop dfsadmin -safemode leaveporque estaba ejecutando Hadoop en un contenedor Docker y ese comando falla mágicamente cuando se ejecuta en el contenedor, así que lo que hice fue esto. Revisé el documento y encontré dfs.safemode.threshold.pcten la documentación que dice

Especifica el porcentaje de bloques que deben satisfacer el requisito mínimo de replicación definido por dfs.replication.min. Los valores menores o iguales a 0 significan que no se debe esperar ningún porcentaje particular de bloques antes de salir del modo seguro. Los valores superiores a 1 harán que el modo seguro sea permanente.

así que cambié el hdfs-site.xmla lo siguiente (en versiones anteriores de Hadoop, aparentemente debes hacerlo en hdfs-default.xml:

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

Namenode entra en modo seguro cuando hay escasez de memoria. Como resultado, HDFS solo se vuelve legible. Eso significa que no se puede crear ningún directorio o archivo adicional en el HDFS. Para salir del modo seguro, se utiliza el siguiente comando:

hadoop dfsadmin -safemode leave

Si está utilizando cloudera manager:

go to >>Actions>>Leave Safemode

Pero no siempre resuelve el problema. La solución completa está en hacer espacio en la memoria. Use el siguiente comando para verificar su uso de memoria.

free -m

Si está usando cloudera, también puede verificar si el HDFS muestra algunos signos de mala salud. Probablemente debe estar mostrando algún problema de memoria relacionado con el nodo de nombre. Asigne más memoria siguiendo las opciones disponibles. No estoy seguro de qué comandos usar para el mismo si no está usando cloudera manager, pero debe haber una manera. ¡Espero eso ayude! :)

Amitesh Ranjan
fuente
5

Prueba esto

sudo -u hdfs hdfs dfsadmin -safemode leave

comprobar el estado del modo seguro

sudo -u hdfs hdfs dfsadmin -safemode get

Si todavía está en modo seguro, entonces una de las razones sería que no hay suficiente espacio en su nodo, puede verificar el uso del disco de su nodo usando:

df -h

si la partición raíz está llena, elimine archivos o agregue espacio en su partición raíz y vuelva a intentar el primer paso.

Tarun Reddy
fuente
4

modo
seguro activado significa (HDFS está en modo de solo lectura) modo seguro desactivado significa (HDFS está en modo de escritura y lectura)

En Hadoop 2.6.0, podemos verificar el estado del nodo de nombre con la ayuda de los siguientes comandos:

PARA VERIFICAR EL NOMBRE DEL NODO

$ hdfs dfsadmin -safemode get

PARA ENTRAR EN MODO SEGURO:

$ hdfs dfsadmin -safemode enter

PARA SALIR DEL modo SEGURO

~$ hdfs dfsadmin -safemode leave
Vishwajeet Singh
fuente
1
PARA FORZAR SALIR DEL MODO SEGURO: ~ $ hdfs dfsadmin -safemode forceSalir
ammills01
1

Ejecute el siguiente comando con el usuario del sistema operativo HDFS para deshabilitar el modo seguro:

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

use el siguiente comando para desactivar el modo seguro

$> hdfs dfsadmin -safemode dejar

Azam Khan
fuente