Hadoop——错误Name node is in safe mode
今天在重启hadoop服务的时候,想删除hdfs中的一个目录/test3,结果遇到了如下的错误,提示无法删除该目录:
root@0d0fc89cc479:/hadoop/hadoop-2.9.1/test/Class_Design# hadoop fs -rm -r /test3/
18/11/07 06:33:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
rm: Cannot delete /test3. Name node is in safe mode.
上网查了一下,这是因为此时Hadoop的NameNode正处在安全模式下,我也顺便简单地了解了一下什么是Hadoop的安全模式,下面简单地记录一下:
Hadoop的安全模式主要是为了系统在启动的时候检查各个DataNode上的数据块的有效性,并根据策略必要地进行部分数据块的删除或复制。在safemode模式下,分布式文件系统启动的时候,NameNode就会首先进入安全模式,此时文件系统中的内容是不允许修改或删除的,直到安全模式结束为止。
当然,在Hadoop运行期间,用户可以通过命令自行退出或进入安全模式,用户可以通过如下命令来操作安全模式:
hadoop dfsadmin -safemode [value]
/*
value参数的说明如下:
enter : 进入安全模式
leave : 强制NameNode退出安全模式
get : 返回安全模式是否开启的信息
wait : 等待,一直到安全模式结束
*/
因此,我就可以利用如下命令来强行退出安全模式:
root@0d0fc89cc479:/hadoop/hadoop-2.9.1/test/Class_Design# hadoop dfsadmin -safemode leave
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
18/11/07 06:38:53 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Safe mode is OFF
运行后,就可以正常删除文件夹了:
root@0d0fc89cc479:/hadoop/hadoop-2.9.1/test/Class_Design# hadoop fs -rm -r /test3/
18/11/07 06:38:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Deleted /test3