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中创建任何内容
我做了
root# bin/hadoop fs -safemode leave
但显示
safemode: Unknown command
问题是什么?
答案 0 :(得分:198)
为了强制让namenode离开safemode,应该执行以下命令:
bin/hadoop dfsadmin -safemode leave
您的命令出现Unknown command
错误,因为-safemode
不是hadoop fs
的子命令,但它是hadoop dfsadmin
。
同样在上面的命令之后,我建议你运行一次hadoop fsck
,这样就可以解决hdfs中出现的任何不一致问题。
<强>更新强>
对较新的发行版使用hdfs
命令而不是hadoop
命令。不推荐使用hadoop
命令:
hdfs dfsadmin -safemode leave
hadoop dfsadmin
已被弃用,hadoop fs
命令也被弃用,所有与hdfs相关的任务都被移动到单独的命令hdfs
。
答案 1 :(得分:27)
试试这个,它会起作用
sudo -u hdfs hdfs dfsadmin -safemode leave
答案 2 :(得分:21)
命令对我不起作用,但以下做了
hdfs dfsadmin -safemode leave
我使用hdfs
命令而不是hadoop
命令。
答案 3 :(得分:6)
如果你使用上面的Hadoop版本2.6.1,当命令工作时,它会抱怨它的折旧。我实际上无法使用hadoop dfsadmin -safemode leave
,因为我在Docker容器中运行Hadoop,并且该命令在容器中运行时神奇地失败,所以我所做的就是这个。我查看了doc并在文档中找到了dfs.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>
答案 4 :(得分:5)
试试这个
sudo -u hdfs hdfs dfsadmin -safemode leave
检查safemode的状态
sudo -u hdfs hdfs dfsadmin -safemode get
如果它仍处于安全模式,那么其中一个原因是节点空间不足,您可以使用以下方法检查节点磁盘使用情况:
df -h
如果root分区已满,请删除文件或在根分区中添加空间,然后重试第一步。
答案 5 :(得分:4)
当内存不足时,Namenode进入安全模式。结果,HDFS变得只有可读性。这意味着无法在HDFS中创建任何其他目录或文件。要退出安全模式,使用以下命令:
hadoop dfsadmin -safemode leave
如果您使用的是cloudera经理:
go to >>Actions>>Leave Safemode
但它并不总能解决问题。完整的解决方案在于在内存中留出一些空间。使用以下命令检查内存使用情况。
free -m
如果您使用的是cloudera,您还可以检查HDFS是否显示出一些健康状况不佳的迹象。它可能必须显示与namenode相关的一些内存问题。按照可用选项分配更多内存。如果您不使用cloudera管理器,我不确定要使用哪些命令,但必须有一种方法。希望能帮助到你! :)
答案 6 :(得分:3)
安全模式开启(HDFS处于只读模式)
安全模式关闭意味着(HDFS处于可读写模式)
在Hadoop 2.6.0
中,我们可以借助以下命令检查名称节点的状态:
检查名称节点状态
$ hdfs dfsadmin -safemode get
进入安全模式:
$ hdfs dfsadmin -safemode enter
离开安全模式
~$ hdfs dfsadmin -safemode leave
答案 7 :(得分:1)
使用HDFS OS用户运行以下命令以禁用安全模式:
{{1}}
答案 8 :(得分:0)
使用以下命令关闭安全模式
$&GT; hdfs dfsadmin -safemode leave