名称节点处于安全模式。 不能离开

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. 

无法在hdfs中创build任何东西

我做了

 root# bin/hadoop fs -safemode leave 

但是显示

 safemode: Unknown command 

问题是什么?

为了强制让namenode离开安全模式,应执行以下命令:

  bin/hadoop dfsadmin -safemode leave 

您的Unknown command出现Unknown command错误,因为-safemode不是hadoop fs的子命令,而是hadoop dfsadmin

同样在上面的命令之后,我build议你一次运行hadoop fsck以便hdfs中的任何不一致都可以被排除。

更新:

对于较新的发行版,使用hdfs命令而不是hadoop命令。 hadoop命令已被弃用:

 hdfs dfsadmin -safemode leave 

hadoop dfsadmin已被弃用, hadoop fs命令也是如此,所有hdfs相关的任务都被转移到一个单独的命令hdfs

试试这个,它会起作用

 sudo -u hdfs hdfs dfsadmin -safemode leave 

司令部不为我工作,但下面做了

 hdfs dfsadmin -safemode leave 

我用hdfs命令而不是hadoop命令。

看看http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe-也是模式链接;

如果您在上面使用Hadoop版本2.6.1,而命令工作,它抱怨,它的折旧。 我实际上不能使用hadoop dfsadmin -safemode leave因为我在Docker容器中运行Hadoop,并且该命令在容器中运行时奇迹般地失败,所以我做了这个。 我检查了文档,发现文档中finddfs.safemode.threshold.pct

指定应满足由dfs.replication.min定义的最小复制要求的块的百分比。 小于或等于0的值表示在退出安全模式之前不等待块的任何特定百分比。 大于1的值将使安全模式永久。

所以我把hdfs-site.xml改成了以下版本(在旧的Hadoop版本中,显然你需要在hdfs-default.xml

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

内存不足时Namenode进入安全模式。 因此HDFS只能读取。 这意味着不能在HDFS中创build任何额外的目录或文件。 要退出安全模式,请使用以下命令:

 hadoop dfsadmin -safemode leave 

如果你正在使用clouderapipe理器:

 go to >>Actions>>Leave Safemode 

但是这并不总能解决问题。 完整的解决scheme在于在内存中占用一些空间。 使用以下命令检查您的内存使用情况。

 free -m 

如果您正在使用cloudera,则还可以检查HDFS是否显示出健康状况不佳的迹象。 它可能必须显示一些与namenode相关的内存问题。 遵循可用的选项分配更多的内存。 我不知道如果你不使用clouderapipe理器,同样使用相同的命令,但一定有办法。 希望它有帮助! 🙂

使用HDFS操作系统用户运行以下命令来禁用安全模式:

 sudo -u hdfs hadoop dfsadmin -safemode leave 

使用下面的命令来closures安全模式

$> hdfs dfsadmin -safemode离开