Configuración de fs.default.name en core-site.xml Establece HDFS en Safemode
Instalé la distribución CDH4 de Cloudera en una sola máquina en modo pseudo-distribuido y probé con éxito que estaba funcionando correctamente (por ejemplo, puede ejecutar programas de MapReduce, insertar datos en el servidor de Hive, etc.) Sin embargo, si es posiblecore-site.xml
archivo para tenerfs.default.name
establecer el nombre de la máquina en lugar delocalhost
y reinicie el servicio NameNode, el HDFS entra en modo seguro.
Antes del cambio defs.default.name
, Corrí lo siguiente para verificar el estado del HDFS:
$ hadoop dfsadmin -report
...
Configured Capacity: 18503614464 (17.23 GB)
Present Capacity: 13794557952 (12.85 GB)
DFS Remaining: 13790785536 (12.84 GB)
DFS Used: 3772416 (3.60 MB)
DFS Used%: 0.03%
Under replicated blocks: 2
Blocks with corrupt replicas: 0
Missing blocks: 0
Entonces hice la modificación acore-site.xml
(con el nombre de la máquina siendohadoop
):
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:8020</value>
</property>
Reinicié el servicio y repetí el informe.
$ sudo service hadoop-hdfs-namenode restart
$ hadoop dfsadmin -report
...
Safe mode is ON
Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: NaN%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Una nota interesante es que todavía puedo ejecutar algunos comandos HDFS. Por ejemplo, puedo correr
$ hadoop fs -ls /tmp
Sin embargo, si intento leer un archivo usandohadoop fs -cat
o intente colocar un archivo en el HDFS, me dicen que el NameNode está en modo seguro.
$ hadoop fs -put somefile .
put: Cannot create file/user/hadinstall/somefile._COPYING_. Name node is in safe mode.
La razón por la que necesito elfs.default.name
La configuración del nombre de la máquina se debe a que necesito comunicarme con esta máquina en el puerto 8020 (el puerto predeterminado de NameNode). Sifs.default.name
se deja alocalhost
, entonces el servicio NameNode no escuchará solicitudes de conexión externa.
No sé por qué sucede esto y agradecería cualquier ayuda.