名称节点处于安全模式。 不能离开
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
命令。
如果您在上面使用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离开